[Python-de] Konventionen
Ulf Rompe
python-de at rompe.org
Fr Jul 30 23:03:09 CEST 2010
Am 30.07.2010 13:49, schrieb Sebastian Bechtel:
> Es ist ja Möglich, mit from ... import ... sehr spezifisch Dinge zu
> importieren in den Namenraum.
Meines Erachtens gehört diese Möglichkeit zu den größten
Design-Schwächen von Python (was nur beweist, dass Python schon ziemlich
perfekt ist, wenn mir nichts schlimmeres daran auffällt). Wenn ich mich
präzise ausdrücken kann, warum sollte ich es dann nicht tun? Schreibe
ich nur time() in meinen Code, wird vermutlich noch jedem Leser klar
sein, um was es geht. Wer es nicht weiß, muss dann schon nach oben in
die import-Liste scrollen und nachsehen. Nun könnte man argumentieren,
dass das zumutbar sei - aber welcher Gewinn steht dem gegenüber? Dass
man ab der dritten Verwendung einige Bytes spart? Hey, wir machen doch
kein Perl hier.
Namensräume können auch für Programmierer ein nützliches Hilfsmittel
sein, denn sie helfen nicht nur dem Interpreter beim gedanklichen
Einordnen von Objekten. Ich sehe also keinen Grund, sich selbst (also
dem Programmierer, der in einem halben Jahr auf den Code schaut, als
sähe er ihn zum ersten Mal) diese Hilfe zu nehmen.
Und die Treffsicherheit hast Du ja auch schon angesprochen: Auch, wenn
man davon ausgehen kann, dass time() wohl von nirgendwo sonst kommen
wird - sicher ist das keinesfalls. Irgendwann wird sich jemand finden,
der in Deinem Modul eine lokale time-Funktion einbaut. Sein Code, der
die benutzt, wird dann auch funktionieren. Deiner aber nicht mehr. Oder,
schlimmer noch, er wird sich nur anders verhalten, und Du wirst es erst
bemerken, wenn der Kunde drüber meckert. :-)
Vom Zusatzaufwand beim Refaktorieren will ich jetzt mal gar nicht erst
anfangen - ich komme mir ja schon ganz destruktiv vor.
Also gut, ein Vorteil des "from ... import ..." fällt mir dann doch ein:
Bei sehr großen Modulen verringert das den Overhead, weil nur das im
Speicher lagert, was auch gebraucht wird. Wenn allerdings ein Modul
wirklich derart groß ist, dass sich das bemerkbar macht, ist vermutlich
auch schon irgendetwas aus dem Ruder gelaufen...
So, genug der Meinungsäußerung. Wirkliche Fakten und Links haben ja
andere schon geliefert.
--
[x] u1f
Mehr Informationen über die Mailingliste python-de