[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