0251 / 590 837 15
info@a-coding-project.de

Code-Struktur: Mininmalismus oder All-In-One?

Mich würde interessieren, wie ihr größere Projekte strukturiert. Dabei gibt es zwei extreme Vorgehensweisen. Zum einem ist es Minimalismus, bei dem man versucht alles möglichst eigentständig zu machen, und All-In-One, also versuchen alles was man braucht in ein großes Code-Projekt zu stecken.

Da ich mehrere Projekte mit beiden Vorgehensweisen entwickelt / betreut habe, möchte ich diese Mal vergleichen. Letztendlich soll es eine kleine Hilfe zur Auswahl der Technik beim Start eines Projektes sein. Über weitere Argumente in den Kommentaren würde ich mich natürlich freuen.

All-In-One Projekte – Der komplette Quellcode an einer Stelle

Der größte Vorteil bei All-In-One-Projekten ist, dass der Code zentral verwaltet und somit ohne große Probleme überall genutzt werden kann. Die Funktionen im Projekt können alle gut miteinander verknüpft werden. Man muss sich nicht immer neu in ein Projekt einarbeiten und kann so auch schnell mal zwischen einzelnen Aufgaben hin und herspringen.

Mini-Projekte – Der Quellcode in mehrere Teile zerteilt

Man kann größere Projekte oft auch in kleine Teile aufteilen. In meinem CMS möchte ich es zum Beispiel so machen, dass alles in kleinen Plugins ausgelagert wird, die dann aufeinander aufbauen. Andererseits kann man in seinen Projekten auch einzelne Teile der Seite auslagern, zum Beispiel ein Service, der sich nur um das Hochladen und Bereitstellen der Bilder kümmert. Der größte Vorteil dabei ist, dass man unabhängig voneinander arbeiten kann und es so leichter ist, Arbeit zum Beispiel an Freelancern weiterzugeben.

Deployment – Wie lade ich das Projekt hoch?

Ein interessanter Punkt ist das Deployment, also quasi das Hochladen und Verteilen des Quellcodes. Hier hat meiner Meinung nach die Aufteilung in mehrere Mini-Projekte die Nase vorn, da man ein geringeres Risiko beim Update hat. Statt einen großen Part Testen zu müssen, kann man sich auf den Teil konzentrieren, der geändert wurde. Außerdem können die Rechte so verteilt werden, dass jeder Mitarbeiter nur Rechte auf dem Teil hat, bei dem er auch Entwickler ist.

Performance – Welche Methode bringt performantere Ergebnisse

Das dürfte in der Regel das All-In-One Projekt sein, da die Schnittstellen zwischen den Mini-Projekten wegfallen. Im Endeffekt liegt es aber auch immer an der internen Umsetzung. In einem großen Projekt besteht immer die Gefahr, dass Code ausgeführt wird, der gerade gar nicht benötigt wird, nur weil er einfach da ist.

Welche Struktur ist schneller umgesetzt?

In einem festen Team ist vermutlich das All-In-One Projekt schneller umgesetzt, da man sich nicht immer in jedes Mini-Projekt einarbeiten muss. Jedoch kann man bei den Mini-Projekten bereits Sachen fertigstellen, bei denen man im großen Projekt erst auf andere Sachen warten muss. Außerdem ist, wie oben bereits erwähnt, dass Hinzufügen von Freelancern leichter, so dass man bei Zeitdruck Arbeit ohne große Erklärungen auslagern kann.

Sicherheit

Hier haben die Mini-Projekte die Nase vorn. Denn man kann alle Zugänge (MySQL, FTP,…) auf einen kleinen Part mit sehr eingeschränkten Rechten begrenzen. Wenn dann wirklich mal ein Zugang gehackt wird, hat man nur den Part und nicht das komplette Gesamtprojekt. Außerdem kann man die Mini-Projekte besser auf mehrere Server/Rechenzentren verteilen. Kommt dann eine DDOS-Attacke, ist im Optimalfall wieder nur ein Teil weg und nicht das komplette Projekt davon betroffen.

Welcher Projektumfang ist für mich am besten?

Beide Methoden haben ihre Vorteile. Wer ein Open Source Projekt startet, dürfte mit Minimalismus eine gute Wahl treffen. In festen Teams, liegen beide Varianten auf gleicher Höhe. Hier muss letztendlich jeder seine Wahl treffen. Oft wird auf ein All-In-One Projekt hingearbeitet, man sollte sich aber auch über das Minimalismus-Prinzip Gedanken machen.

Kommentare

Lucas schrieb am 28.01.2013:

Ich muss von meiner Seite sagen, dass ich eine globale Config nehme und jeder Grundfunktion (Userverwaltung, CMS...) eine eigene Klasse spendiere. Dazu noch ein paar Files, welche die Methoden aufrufen.