Y0Gi hat geschrieben:k, v: `for k, v in some_dict.iteritems(): print k, '=', v` (kein optimales Beispiel, zugegeben, aber dass da von "key" und "value" die Rede ist, liegt einfach auf der Hand)
[...]
anyone even hints at breaking the tradition honoured since FØRTRAN of using i, j, and k for indexing variables
Hi Y0Gi!
Letzte Erklärung von mir zu diesem Thema:
Erstens zitierst du, dass i, j, und k Variablenamen sind, die gerne für Indizes heran gezogen werden und im gleichen Aufwischen verwendest du k um darin einen **Key** abzulegen. Was du dir mit ``k`` gedacht hast, ist nur im direkten Kontext ermittelbar.
Zweitens, möchte ich klar stellen, dass Programme wachsen und es nicht sicher ist, dass man 20 Zeilen weiter unten nicht doch wieder den Wert einer Variablen braucht, die vorher nur mit k, x oder v zugewiesen wurde.
Durch die Verwendung von nicht aussagekräftigen Variablenamen zwingst du andere oder später auch dich selbst dazu, mehr Code durchlesen zu müssen, um herauszufinden was den jetzt wirklich in k, x oder v drinnen steht.
Ich persönlich bevorzuge Code, den ich mit den Augen scannen kann. Also Quellcode, in dem ich ziemlich schnell die Stelle finde, in der ich z.B. ein Problem vermute. Wenn ich mir den Quellcode komplett durchlesen muss um eine Stelle zu finden, dann empfinde ich das als großen Nachteil.
Das Problem ist nicht das Verwenden von solchen Kurzbezeichnern in einfachen Schleifen, sondern die Verwendung von Kurzbezeichnern in komplexeren oder längeren Algorithmen. Und wenn ich nicht ausschließen kann, ob es komplexer wird, dann sind aussagekräftige Variablen schon etwas feines.
someXmlThingy = SomeXmlThingy()
Das ist schon ein bischen übertrieben. Man könnte ja auch kürzere Namen finden, die trotzdem aussagen, was darin gespeichert ist. Z.B.:
Code: Alles auswählen
root = XmlThing().get_root()
# oder
article = get_article(1234)
# oder
for adr in cur.fetchall():
print adr["vorname"], adr["nachname"]
Ich sehe z.B. öfter so etwas wie ``for i in c.fetchall():`` -- ganz im Ernst -- bei so etwas kriege ich einen Anfall.
Wie auch immer... Meist ist der mittlere Weg nicht schlecht. In einfachen Schleifen kann man ja machen wie man will, aber in längeren sollten die Bezeichner aussagekräftig sein.
@birkenfeld: In der Physik haben diese Buchstaben eine, meist exakt definierte, Bedeutung. Wenn ich ein Programm schreiben würde, in dem mit Einheiten der Elektrik gerechnet wird, dann ist es ja auch für niemanden ein Problem, wenn ``v``, ``w`` oder ``a`` verwendet wird. Jeder weiß sofort, was damit gemeint ist. Wenn ich diese Variablenamen aber in einer Rezeptverwaltung verwende, dann weiß niemand was damit gemeint sein könnte. (Das ist wieder so ein Extrembeispiel, aber mir ist nichts besseres eingefallen.)
...just my two cent...
lg
Gerold