Sei from module import functionder FMIF-Codierungsstil.
Nennen import modulewir den IM-Codierungsstil.
Nennen from package import modulewir den FPIM-Codierungsstil.
Warum wird IM + FPIM als besserer Codierungsstil als FMIF angesehen? (In diesem Beitrag finden Sie die Inspiration für diese Frage.)
Hier sind einige Kriterien, die mich dazu veranlassen, FMIF IM vorzuziehen:
- Kürze des Codes: Es ermöglicht mir, kürzere Funktionsnamen zu verwenden und so die Konvention von 80 Spalten pro Zeile einzuhalten.
- Lesbarkeit:
chisquare(...)erscheint besser lesbar alsscipy.stats.stats.chisquare(...). Obwohl dies ein subjektives Kriterium ist, denke ich, dass die meisten Menschen zustimmen würden. - Einfache Umleitung: Wenn ich FMIF verwenden und aus irgendeinem Grunde zu einem späteren Zeitpunkt will Python umleiten zu definieren ,
functionausalt_modulestattmoduleIch brauche nur eine Zeile zu ändern:from alt_module import function. Wenn ich IM verwenden würde, müsste ich viele Codezeilen ändern.
Ich interessiere mich für alle Gründe, warum IM + FPIM besser als FMIF ist, aber insbesondere würde ich mich für die Ausarbeitung der folgenden hier genannten Punkte interessieren :
Vorteile für IM:
- Leichtes Verspotten / Injizieren in Tests. (Ich bin mit Spott nicht sehr vertraut, obwohl ich kürzlich erfahren habe, was der Begriff bedeutet. Können Sie Code anzeigen, der zeigt, wie IM hier besser ist als FMIF?)
- Möglichkeit für ein Modul, sich durch Neudefinition einiger Einträge flexibel zu ändern. (Ich muss etwas falsch verstehen, denn dies scheint ein Vorteil von FMIF gegenüber IM zu sein. Siehe meinen dritten Grund für FMIF oben.)
- vorhersehbares und kontrollierbares Verhalten bei der Serialisierung und Wiederherstellung Ihrer Daten. (Ich verstehe wirklich nicht, wie sich die Wahl von IM oder FMIF auf dieses Problem auswirkt. Bitte erläutern Sie dies.)
- Ich verstehe, dass FMIF "meinen Namespace verschmutzt", aber abgesehen davon, dass es sich um eine negativ klingende Phrase handelt, weiß ich nicht zu schätzen, wie sehr dies den Code auf konkrete Weise verletzt.
Danke vielmals.