Objektorientierte Programmierung als konzeptualer Fehler
Anmerkung: ich bin mir der ursprünglichen Definition von OOP im Sinne von Smalltalk durchaus bewusst
Doch genau dieser Punkt ist das, was ich an der objektorientierten Programmierung kritisiere: Es war eine intellektuelle Spielerei.
Heutige OOP-Programmierer werden dafür kritisiert, dass sie die OOP im Sinne von Smalltalk nicht ganz ernst nehmen - sie versuchen, die prozedurale Programmierweise mit objektorientierten Möglichkeiten zu erweitern.
Ich meine, dass dieses halb-und-halb-und-nichts-richtig seine Fehlerhaftigkeit aus dem objektorientierten Teil bezieht.
Die Idee von Smalltalk war von Anfang an, Entscheidungen der Softwarearchitektur erst zur Laufzeit vom Programm in Echtzeit machen zu lassen. Dann geht ein Großteil der Rechenleistung dafür drauf, und letzten Endes arbeitet das Programm nie einheitlich, was zu Raceconditions führt. Auch sind solche Überlegungen nicht nur von der Komplexität aufwendig, sondern auch aus der Sicht des dort hineinzusteckenden Wissens, und das hat die Laufzeit einfach nicht.
Wofür Programmierer die objektorientierte Programmierung nämlich fälschlich verwenden, ist, dem Programm ihre Befehle zu übermitteln, ohne sich zu überlegen, wie das Programm das anstellen soll.
So werden Skalierungsprobleme falsch berechnet, deadlockconditions nicht erkannt, und der code wird schwer lesbar, da man sich dann durch etliche Seiten code durchlesen muss und da man nicht bei jeder Abzweigung auch abzweigen kann, overloads übersieht man zum Teil, hat man am Ende des Lesens kaum etwas verstanden.
Objektorientierte Programmierung ist dann angezeigt, wenn etwas wirklich ein Objekt werden soll. Ein simulierter Gegenstand oder ein Menüknopf.
Wer Datenstrukturen, die den Zweck eines Übergabeparameters erfüllen, als Objekt implementiert, behindert seine Tiefsicht genau in dem Moment, wo sie am notwendigsten ist: Bei API-Aufrufen.
Wer da alle Probleme erkennen will muss die Struktur komplett verstehen und sich ins kleinste Detail vorstellen können. Eine Verkapselung durch Getter/Setter oder gar Factorys versperrt dieses Verständnis stark.