Das mit den Tests ist ein gutes Beispiel. Um überhaupt testen zu können, muss man Code schreiben, der wirklich entkoppelt ist. Also keine bis wenige Abhängigkeiten besitzt. Somit bekommt man allein durch diesen Vorsatz, 2 Fliegen mit einer Klappe geschlagen.
Manchmal muss ich lachen wenn ich an meinen ersten Versuch denke, einen
Unit-Test für ein bestehendes Monster-Projekt zu schreiben. Da hing fast jede Klasse mit allen anderen zusammen. Es war unmöglich einen isolierten Test du schreiben.
Was Kapselung wirklich bedeutet und wofür es gut ist, zeigten mir erst die geliebten Design-Patterns.
Oftmals ärgerte ich mich über die Einschränkungen von Delphi (keine Mehrfachvererbung, strenge Typisierung), die ich als Nachteil betrachtete. Dabei sind dies enorme Vorteile. Mehrfachvererbung verletzt eindeutig das Kapselungsprinzip und unterstützt nur die Faulheit. Wer mal versucht in PHP ein größeres Projekt aufzuziehen, wird sich nach eindeutigen Typen und der Reinheit von Delphi sehnen.
Dies war jetzt wohl ein wenig Off-Topic, aber als Thread-Eröffner möge mir man dies verzeihen