Modulares Programmieren
Am Anfang dachte ich, Unterprogramme braucht man nur für Programmcode, der an mehreren Stellen aufgerufen wird. Das war aber ein Irrtum. Es gilt als guter Programmierstil, ein umfangreiches Hauptprogramm zu vereinfachen, indem man Codeteile in eigene Programmmodule auslagert. Im Idealfall sollte jede Funktion und Prozedur vollständig auf einer Bildschirmseite Platz haben. Das ist meines Erachtens gar nicht immer so einfach. Stell dir zum Vergleich vor, du sollst einen Roman schreiben, bei dem jedes Kapitel maximal eine Seite hat, und dennoch soll jedes Kapitel möglichst in sich abgeschlossen sein.
Ein anderer Vergleich sind die Texte auf meiner Website. Ich könnte sie auch alle auf einige wenige, große Seiten stellen. Das wäre dann aber meiner Ansicht nach weniger gut lesbar und weniger benutzerfreundlich. Daher teile ich alle meine Texte in kleine "Module" auf. Sobald ein "Modul" zu groß wird, lagere ich Teile davon in Unterseiten aus.
Vorteile
Modularer Programmcode ist tendenziell
- übersichtlicher
- leichter wiederverwendbar
- leichter erweiterbar
Nachteile
- Je sauberer man programmiert, desto mehr Aufwand hat man bei Änderungen, weil die sauber getrennten Module mehr Schnittstellen haben, die alle mitgeändert werden müssen.
- häufig auch langsamere Ausführungsgeschwindigkeit – einer der Gründe, wieso heutige Software trotz immer schnellerer Rechner oft immer noch quälend langsam ist
- Das Auslagern von Modulen in eigenständige Bibliotheksdateien kann Probleme bereiten, wenn irgendwann verschiedene Versionen derselben Bibliotheksdatei zugleich installiert werden (müssen). – Siehe DLL-
Konflikt und JAR hell in der Wikipedia
Mein Fazit
Modulares Programmieren finde ich gut, aber man kann es auch übertreiben. Im Extremfall wird aus einem einfachen Ablauf durch das Zerteilen in viele kleine Module ein undurchschaubares Durcheinander.
Sinnvoll ist das Aufteilen von Code meines Erachtens dann, wenn die einzelnen Teile schon aufgrund ihres Namens erahnen lassen, was sie tun. Wenn sie hingegen mehr oder weniger künstlich zerteilte Aufgaben enthalten oder sich mit internen Strukturen und Gegebenheiten beschäftigen, dann ist auch der klein aufgeteilte Code nicht immer so leicht verständlich und übersichtlich.