Name für Variable mit gleichem Wert in verschiedenen Gültigkeitsbereichen

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
Atalanttore
User
Beiträge: 407
Registriert: Freitag 6. August 2010, 17:03

Hallo

Ich habe verschiedene Gültigkeitsbereiche im Code. Nun kommt es, zumindest bei mir, immer wieder vor, dass ich auf die gleiche Variable in verschiedenen Gültigkeitsbereichen zugreifen möchte. Bei Klassen kann man über `__init()__` der gewünschten Variablen im jeweiligen Gültigkeitsbereich einen eigenen Namen zuweisen.

Sollte man der praktisch gleichen Variable in verschiedenen Gültigkeitsbereichen jeweils den gleichen Namen zuweisen oder nicht?

Gruß
Atalanttore
Benutzeravatar
__blackjack__
User
Beiträge: 13006
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Man sollte den Namen verwenden der am besten passt, damit es möglichst verständlich ist.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Atalanttore
User
Beiträge: 407
Registriert: Freitag 6. August 2010, 17:03

Also überall den gleichen Namen, den man sich gut überlegt hat?

Gruß
Atalanttore
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Überall, wo Du einen Bezeichner brauchst, solltest Du nicht den 'gleichen', sondern den jeweils passenden gebrauchen. Was den 'gleichen' nicht ausschließt. Wenn kein passender Name zu finden ist, hast Du wahrscheinlich ein Problem mit dem Entwurf. Bezeichner sollten beschreibende Namen haben, im Sinne von 'was bin ich'. Aber ohne Datentyp (ungarische Notation).
Atalanttore
User
Beiträge: 407
Registriert: Freitag 6. August 2010, 17:03

Wenn es sich beim Datentyp um eine Liste handelt, verwendete ich bisher gerne den Suffix `_list`. In letzter Zeit hatte ich z.B. `color_list` oder `point_list`. Sind das auch schlechte Bezeichner?

Gruß
Atalanttore
Benutzeravatar
__blackjack__
User
Beiträge: 13006
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Atalanttore: Ja, weil sich das während der Programmentwicklung öfter mal ändert, wenn man nämlich feststellt, dass es einen besseren, passenderen Datentyp gibt (`set`, `Queue`, Generator bzw. irgendetwas anderes iterierbares, …), oder man die Liste durch einen eigenen Datentyp ersetzt. Dann hat man einen falschen, den Leser verwirrenden Datentyp im Namen stehen, oder man muss das gesamte Programm durchgehen und schauen wo man überall Namen anpassen muss. Für Containertypen verwendet man deshalb in der Regel einfach die Mehrzahl von dem was man für ein einzelnes Element als Namen vergeben würde. Für Deine Beispiele `colors` und `points`.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Atalanttore
User
Beiträge: 407
Registriert: Freitag 6. August 2010, 17:03

__blackjack__ hat geschrieben: Sonntag 15. Juli 2018, 16:21 @Atalanttore: Ja, weil sich das während der Programmentwicklung öfter mal ändert, wenn man nämlich feststellt, dass es einen besseren, passenderen Datentyp gibt (`set`, `Queue`, Generator bzw. irgendetwas anderes iterierbares, …), oder man die Liste durch einen eigenen Datentyp ersetzt.
Mit `Queue` hatte ich noch in keinem Tutorial zu tun. Generatoren haben ich schon gesehen, aber noch nie selbst benutzt.
Meinst du mit "einen eigenen Datentyp" eine selbst gebaute Alternative zu den eingebauten Datentypen `int`, `float`, `string`, `list`, `tuple`, `dict`?

__blackjack__ hat geschrieben: Sonntag 15. Juli 2018, 16:21 Dann hat man einen falschen, den Leser verwirrenden Datentyp im Namen stehen, oder man muss das gesamte Programm durchgehen und schauen wo man überall Namen anpassen muss.
Zum Ändern von Variablennamen verwende ich die Umbenennungsfunktion von PyCharm. Das funktioniert eigentlich ziemlich zuverlässig, wobei meine bisherigen Projekte nur sehr selten (wenn Qt im Spiel ist) aus mehr als einer Datei bestanden.

__blackjack__ hat geschrieben: Sonntag 15. Juli 2018, 16:21Für Containertypen verwendet man deshalb in der Regel einfach die Mehrzahl von dem was man für ein einzelnes Element als Namen vergeben würde. Für Deine Beispiele `colors` und `points`.
Mit Containertypen meinst du `list`, `tuple` oder `dict`, die Variablen vom Typ `int`, `float` oder `string` enthalten können?


Gruß
Atalanttore
Benutzeravatar
__blackjack__
User
Beiträge: 13006
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Atalanttore: Mit eigenem Datentyp meine ich eine selbst geschriebene Klasse.

Die Umbennenungsfunktion benennt ja nur den direkten Namen um. Wenn Du die Liste dann aber wo anders noch benutzt hast und da lokal an einen Namen gebunden hast, dann ist der dort ja immer noch falsch. Man muss dann wirklich alle Wege durch das Programm verfolgen den der Wert nehmen kann, und überall die lokalen Namen korrigieren. Das macht Arbeit und ist fehleranfällig.

Mit Containertypen meine ich alle Typen die *irgend etwas* enthalten können. Also alles was mindestens über den Inhalt iterierbar ist und/oder eine Abbildung implementiert. Die Containertypen kann man nicht aufzählen, denn davon gibt es potentiell unendlich viele. Man kann sich selbst welche schreiben. Das war ja auch eines der Beispiele: Man fängt mit einer Liste an und stellt im weiteren Verlauf fest, es wäre praktisch einen eigenen Datentyp statt der Liste zu verwenden der für das Problem spezifische Methoden bereit stellt, aber eben auch alles was man bisher mit der Liste gemacht hat.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Atalanttore
User
Beiträge: 407
Registriert: Freitag 6. August 2010, 17:03

Wieder mal danke für die guten Erklärungen. :thumbsup:

Gruß
Atalanttore
Antworten