Direkt zur Navigation | Direkt zum Inhalt



Package Chaos

Package Chaos

Die Struktur unserer Packages ist aktuell recht chaotisch. Ohne Suchfunktion ist es kaum möglich eine Klasse zu finden. Da stellt sich die Frage: Arbeiten bei uns nur Chaoten? Oder Genies, die sich erst im Chaos wohl fühlen? Ich glaube weder das Eine noch das Andere. Unserer Package Struktur ist, wie so viele Dinge in der Software Entwicklung entschuldigt werden, historisch gewachsen. D.h. Gründe gibt es diverse und der Schmerz war bisher zu gering dem Einhalt zu gebieten.

Als Ursachen sehe ich vor allem:

  • Neue Namen (Firmenname, Abteilungsname, Teamname, …) führen zu neuen Packages während alte bestehen bleiben.
  • Ohne klare Struktur ist es schwierig, neue Klassen einzuordnen. Da die vorhandenen Packages oft nicht passen, kommen fortlaufend neue hinzu.
  • Nicht alle Entwickler haben den gleichen Hintergrund oder das gleiche Wissen über ein Thema und strukturieren Klassen unterschiedlich.

Das größte Problem an diesem Chaos ist, dass Anforderungen mehrfach und unterschiedlich gelöst werden. Klassen mit gleichen fachlichen Themen sind auf unterschiedlichste Packages verteilt. Betroffene Stellen sind bei Änderungen schwer zu finden und werden leicht übersehen.

Raus aus dem Durcheinander

Ich bin kein großer Freund von langen Regelwerken und Forschriften, wie zu entwickeln ist. Im Gegensatz bin ich davon überzeugt, dass sich eine klare Package Struktur eigenständig durchsetzt, sobald sie vorhanden und nachvollziehbar ist. Doch der Weg aus diesem Gewirr an Packages ist müsig. Etliche Stellen im Code müssen angepasst werden. Unsere Applikationen erstecken sich über mehrere Module hinweg, womit jede Änderung mehrere Releases mit sich zieht. Konfigurationsdateien könnten übersehen werden und Bugs im „Worst-Case“ erst live festgestellt werden. Getoppt wird dies durch Suberversion Baumkonflikte beim Mergen von bereits laufenden Projekten.

Doch aller Anfang ist bekanntlich schwer und so hilft nur eins – ran ans Werk! Mit dem ersten Schritt bin ich gerade beschäftigt. Dabei werde ich alle alten Packages in neue überführen, um die offensichtlich veralteten Strukturen abzuschaffen. Danach werde ich die Anzahl der Top-Level Packages einschränken und diese nach fachlichen Themen strukturieren. Ich bin überzeugt, dass sich dieser Aufwand lohnt. Stück für Stück kristalisiert sich so die finale Struktur der Packages heraus und es wird leichter neue Klassen einzuordnen sowie bestehende Logik aufzufinden.

Die ersten Packages habe ich angepasst bzw. entfernt. Dabei sind die ersten redundaten und unbenuzten Klassen aufgefallen bzw. abgeschafft worden. Sobald die Struktur steht, werden wir darauf aufbauend die Frage der Abhängigkeit zwischen Packages angehen, also welches Package auf welches andere Zugriff haben sollte oder auch nicht. Also Augen zu und durch.

Neues Kommentar