Hallo Rolf,
sorry, das habe ich vielleicht unklar ausgedrückt. Ich habe Schichtentrennung gesagt und nicht erwähnt, dass das auch ohne OO geht. Fischlaks Folding-Technik habe ich so verstanden, dass eine solche Trennung seiner Lokalitätsidee widerspricht.
Vielleicht hast du es auch korrekt ausgedrückt und ich habe es nur falsch verstanden. 😉
Saubere Schichtentrennung ist auch prozedural möglich.
Genau das.
Wenn Du allerdings UI-Steuerung, Logik und DB-Zugriffe ohne Schichtentrennung ineinandergelegt hast, dann hast Du meinen höchsten Respekt, dass Du dabei geistig gesund geblieben bist.
Den nehme ich gerne entgegen – gerade von dir ist mir das eine Ehre.
Inhaltlich glaube ich, dass hier auch viel persönliche Arbeitsweise und Erfahrung/Gewohnheit reinspielt. Ich habe in vielen Projekten sowohl im Team als auch allein gearbeitet und oft auch mit bereits vorgegebenen Architekturen.
Was ich eigentlich ausdrücken wollte: Mich stört nicht das Prinzip der Schichtentrennung an sich, sondern eher der praktische Entwicklungsfluss, der dadurch entsteht. Wenn z.b. meine Daten und Logik in Python liegen und das UI als Webinterface getrennt davon lebt, bedeutet das in der Praxis oft, dass ich ständig zwischen zwei Codewelten hin- und herspringen muss. Gerade bei iterativer Entwicklung oder bei dynamischen Flows (z. B. über WebSockets) fühlt sich das für mich schnell nach nötigem, aber für mich unerwünschtem Kontextwechsel an - weshalb ich innerhalb Projekten, die solche Kontextwechsel nicht zwingend erfordern, für mich andere Schichten als "flüssiger" im arbeiten empfinde.
Ich habe tatsächlich gemerkt, dass ich mich in manchen stark getrennten Webarchitekturen weniger wohlfühle – nicht, weil ich die Gründe dafür (Sauberkeit, Testbarkeit, Austauschbarkeit etc.) nicht sehe, sondern weil es sich für bestimmte Problemklassen für mich weniger direkt und dadurch schwerfälliger anfühlt.
Gleichzeitig sehe ich natürlich, dass saubere Trennung in vielen Kontexten absolut sinnvoll oder sogar notwendig ist, insbesondere wenn mehrere Entwickler zusammen arbeiten oder Systeme langfristig wartbar und erweiterbar bleiben müssen.
Am Ende ist es für mich persönlich (nicht allgemeingültig) wahrscheinlich wirklich eine Mischung aus Kontext, Projektgröße und persönlicher Arbeitsweise – und weniger eine Frage von richtig oder falsch.
Gleichwohl ist auch in von mir alleine verantworteten Projekten ein Struktur, eine Schichtentrennung oder gar Kapselung unerlässlich, nur eben nicht immer die, die man erst einmal als "klassisch" bezeichnen würde.
Ich stelle aber mal eine Frage in den Raum: Ist es nicht bei vielen Entwicklern so, dass sie neben gängigen Methoden der Schichtentrennung und Strukturierung ihre ganz eigene, über die Zeit gewachsene Arbeitsweise entwickeln?
Gruß,Hawk