Seite 1 von 1

namen_mit_typbezeichnung

Verfasst: Mittwoch 25. Februar 2009, 09:21
von Goswin
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?

Verfasst: Mittwoch 25. Februar 2009, 09:52
von kbr
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.

Verfasst: Mittwoch 25. Februar 2009, 10:09
von EyDu
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.

abgehakt

Verfasst: Donnerstag 26. Februar 2009, 11:03
von Goswin
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.

Verfasst: Donnerstag 26. Februar 2009, 11:14
von Darii
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.

Verfasst: Donnerstag 26. Februar 2009, 11:37
von CM
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

Verfasst: Donnerstag 26. Februar 2009, 13:41
von EyDu
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 ;-)

Verfasst: Donnerstag 26. Februar 2009, 13:56
von Leonidas
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).