Das Hauptproblem
Sehen die gute Unterstützung modernsten Programmierplattformen für das Paketmanagement haben (denken gem
, npm
, pip
, usw.), macht es Sinn, eine Anwendung oder ein System zu entwerfen , der intern entwickelten Paketen zusammengesetzt werden, um zu fördern und eine lose gekoppelte Architektur zu schaffen?
Beispiel
Ein Beispiel hierfür wäre das Erstellen von Paketen für den Datenbankzugriff sowie für die Authentifizierung und andere Komponenten des Systems. Diese verwenden natürlich auch externe Pakete. Anschließend importiert und verwendet Ihr System diese Pakete, anstatt ihren Code in seine eigene Codebasis aufzunehmen.
Überlegungen
Mir scheint, dies würde die Codeentkopplung fördern und die Wartbarkeit verbessern, fast auf eine Art webbasierte oder Desktop-Anwendung (Aktualisierungen werden fast automatisch angewendet, einzelne Codebasis für einzelne Funktionen usw.).
Scheint dies ein rationales und vernünftiges Designkonzept zu sein? Wird dies heute tatsächlich als Standard für die Strukturierung von Anwendungen verwendet?
quelle
Alles in allem ist dies eine gute Idee. Sie müssen darüber nachdenken, ein internes Paket-Repository einzurichten (in der Java-Welt normalerweise als "Artefakt-Repository" oder in der Python-Welt als "Pypi-Server" bezeichnet), damit Sie dort die Pakete behalten, die Sie nicht wollen oder können. t als Open Source veröffentlichen.
Wie @pdr bemerkt hat, sollten Sie darauf vorbereitet sein, Ihre eigene Abhängigkeitshölle zu haben , in der eine Änderung an einem Paket zuerst eine weitere Änderung in einem anderen Paket erfordert. Dies bedeutet, dass Sie nicht nur eine Codezeile ändern, sondern sie testen und möglicherweise die Änderungen akzeptieren müssen. Erstellen einer Version und Hochladen der Version in das oben genannte Paket-Repository. Und dann ändern, was Sie ändern wollten .
Das einzige Rezept, das ich Ihnen aus meiner Erfahrung geben kann, um dies zu minimieren: Verlassen Sie sich nicht nur darauf, gemeinsame Konzepte aus Ihren Paketen in ein "gemeinsames" oder "Framework" -Paket zu abstrahieren . Dies kann sehr objektiv erscheinen, führt jedoch zu einem Monsterpaket, das häufige, möglicherweise widersprüchliche Änderungen und Veröffentlichungen erfordert. Denken Sie viel besser über die Funktionen in Ihrem System nach und erstellen Sie für jede einzelne ein Hilfspaket, wie Sie in Ihrer Frage dargelegt haben.
Abgesehen davon besteht der Hauptvorteil darin, dass Ihre Apps von (vielen) Abhängigkeiten isoliert sind, sodass Sie sie problemlos austauschen können.
quelle
common
Paket nicht als Option in Betracht gezogen , aber wie Sie sagen, könnte ich sehen, dass es in Zukunft eine "vernünftige" Entscheidung wird. Meine Absicht war eher die von Komponenten als von Code - daher sollten Sie im Idealfall nicht zu viele Codeteile haben, die dasselbe in verschiedenen Paketen tun, weil sie unterschiedliche Dinge tun sollen. Ich würde vermuten, dass diese Art der Wiederholung bei Gemeinsamkeiten zwischen Paketen nicht gegen gute Programmierprinzipien verstoßen würde, da die Projekte per Definition getrennt sind.