Announcement

Collapse
No announcement yet.

Python Modul Strukturierung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Python Modul Strukturierung

    Hi zusammen

    Wir starten gerade mit einem Projekt in Python. Jetzt wäre die Frage wie man den Code strukturiert. Da es sich um eine dynamische Sprache handelt sollte es gut getestet sein. Jetzt habe ich gesehen dass in Python relativ oft direkt Module importiert werden. Ist das sinnvoll? Wäre es nicht sinnvoller so eine Art Depedency Injection über die init Methode mitzugeben? Ich habe leider relativ wenig Ahnung von Python. Normalerweise bin ich in .Net bzw. Javascript unterwegs. In .Net haben wir Autofac, in Javascript verwenden wir eine AMD implementierung.

    Kann mich jemand in der Richtung beraten? Alle externen Abhängigkeiten einfach per import reinzuhauen fühlt sich irgendwie nicht gut an.

    Danke schon mal!

    Viele Grüße,
    Florian

  • #2
    Python soll 'lesbar' sein - sonnst könnte man ja Java nehmen!

    Comment


    • #3
      Aber die größte 'lesbarkeit' hilft mir eigentlich nichts wenn ich irgendwann einen Klumpen habe der alles wie wild durch die Gegen referenziert und nicht testbar ist. Ich stelle nicht in Frage dass Lesbarkeit die Qualität von Code drastisch erhöht, allerdings möchte ich auch wissen und festhalten was mein Code tut oder auch nicht tut. Dafür braucht es Unit Tests. Wenn ich mir allerdings per import eine 3rd Party Library fest in den Code reinhaue, dann kann ich diesen nicht mehr unit testen, weil ich implizit die 3rd Party library auch mitteste. Bis hin zu Szenarien wo das schlichtweg nicht funktioniert weil der 3rd Party Code auf eine externe Resource geht wie z.B. eine DB.

      Comment


      • #4
        Wenn dir das Unittesten am Herzen liegt hilft es vielleicht das Problem anders herum anzugehen. Schnapp die eins der Mocking Frameworks für Python und sieh dir an wie das lösen. Vielleicht läßt sich daraus ein vernunftiges Pattern für die Anwendung ableiten das dann auch definitiv testbar ist.

        Comment

        Working...
        X