namen_mit_typbezeichnung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Goswin
User
Beiträge: 363
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

Eine kleine Umfrage:

In meinem Code verwende ich für viele wichtigen Objekte Namen wie: prognose_fl, preis_int, artikeldaten_dict, aktiveart_set, warenabgaenge_list, usw. (Das liegt natürlich daran, dass meine Programmiererfahrung von Fortran kommt und Python meine erste dynamisch typisierte Sprache ist)
Was meint ihr: Ist diese Namesgebung eine lobenswerte Programmierpraxis oder ist sie ein Code-Smell?
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Es gilt eher als Code-Smell, eben weil Python eine dynamisch typisierte Sprache ist. Ich halte mich aber selber nicht streng daran und nutze solche Variablennamen bisweilen auch, z.B. "task_list", obgleich dies eigentlich nicht nötig ist, denn Operationen wie "task_list.append()" machen auch ohne die Extension "_list" klar, dass es sich um eine Liste handelt. Der Bezeichner "tasks" würde es also auch tun. Aussagekräftige Variablennamen ohne solche Extensions wäre meine Empfehlung; und wenn es vereinzelt einen guten Grund gibt, den Typ in den Namen einfließen zu lassen, dann ist das auch ok, solange es sparsam geschieht.
Ein schöner Aspekt an Python ist ja die Lesbarkeit des Codes, was aber auch die geschickte Wahl von Variablen-, Funktions- und anderen Bezeichnern erfordert.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Einfach weglassen. Wenn du gute Bezeichner verwendest, dann brauchst den den Typ dazu nicht. Außerdem wird es dich spätestens dann ärgern, wenn du aus einer Liste dann eine Menge machst oder doch eine eigene Klasse für eine bestimme Aufgabe entwickelst. Dann darfst du es nämlich umbennenen.

Und bei deinem "_list" Beispiel könnte man sich natürlich die Frage stellen: Liste von was? Integern? Strings? Möchtest du dann "_list_of_ints" oder so etwas schreiben? ^^

Wenn dann noch eigene Klassen hinzukommen, für welche du Abkürzungen suchst, dann wird es ganz konfus.
Das Leben ist wie ein Tennisball.
Benutzeravatar
Goswin
User
Beiträge: 363
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

Ok und danke; ich werde etwas sparsamer mit Typanzeigen umgehen. Zwar ist es bei mir noch nie vorgekommen, dass ein Name seinen Typ aendern soll, aber vielleicht kommt das spaeter einmal.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Das hat jetzt aber wirklich nichts mit dynamisch/statisch Typisiert zu tun. So etwas ist auch in vielen anderen Sprachen verpönt.

So etwas wie task_list finde ich jetzt allerdings nicht schlimm, schließlich ist das eine Aufgabenliste. Wenn so ein Anhängsel den Namen aussagekräftiger macht, warum nicht.

Sowas wie i_num_people oder num_people_int wäre allerdings eher weniger zweckdienlich. Da gibt quasi das "num" schon den Typ for.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Abgesehen davon: Gibt es in Python int? Nein, weil es als long int implementiert ist. Das ist das "Problem" mit eigentlich allen Typen von Python: Entsprechungen zu anderen Sprachen können in die Irre führen.

Nein, nein, die Ente hat schon ihre guten Seiten. ;-)

Gruß,
Christian
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

CM hat geschrieben:Abgesehen davon: Gibt es in Python int? Nein, weil es als long int implementiert ist.
In Python sehe ich nur Integer, wie es dahinter dann in irgend einer Sprache implementiert ist, ist mir vollkommen egal ;-)
Das Leben ist wie ein Tennisball.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Also vor einiger Zeit konnte es in älteren Python-Versionen durchaus vorkommen dass Integer implizit zu Longs konvertiert wurden. Nicht dass das einen Unterschied gemacht hat.

Zudem kommt dass ungarische Notation eigentlich nicht sagt: "gib der Variablen ein Typprefix" wie das leider viele im Visual Basic-Umfeld aufgefasst haben (auch ich, seinerzeit).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten