- God object
-
God object (deutsch: "Gott-Objekt"; auch: god class bzw. deutsch: Gottklasse) bezeichnet in der objektorientierten Programmierung ein Objekt, das "zu viel weiß" oder "zu viel tut". Das God object ist ein Beispiel für ein Anti-Pattern.
Die grundlegende Idee der strukturierten Programmierung besteht darin, dass große Probleme in eine Vielzahl kleinerer Probleme zerlegt werden, um für diese jeweils Lösungen zu finden. Das Lösen der kleinen Probleme bedeutet gleichsam die Lösung des großen Problems. Daher muss ein jedes Objekt nur über sich selbst wirklich alles wissen, weniger über die anderen; ebenso hat es nur sein eigenes Problem zu lösen, nicht die der anderen Objekte.
Codes, welche auf God-objects basieren, folgen nicht diesem Paradigma. Stattdessen ist ein Großteil der Funktionalität eines Programms in einem einzigen Objekt hinterlegt. Da dieses Objekt so viele Daten und Methoden beinhaltet, wird seine Bedeutung innerhalb des Programms nahezu allumfassend (gottähnlich).
Die einzelnen Objekte kommunizieren also nicht direkt miteinander, sondern sind von dem einen God object abhängig. Da das God object derart stark mit dem übrigen Code referenziert ist, wird die Wartung des Programms, resp. des Objekts, sehr schwierig, was den Anforderungen der Objektorientierung sowie der strukturierten Programmierung nicht gerecht wird.
Die Verwendung eines God object innerhalb der objektorientierten Programmierung entspricht also systematisch dem mangelhaften Gebrauch von Subroutinen oder der übermäßigen Verwendung globaler Variablen in der prozeduralen Programmierung.
Während ein God object generell als Merkmal eines schwachen Programmaufbaus gilt, ist es gängige Praxis innerhalb begrenzter Umgebungen wie dem Mikrocontroller, bei dem eine schnelle Performance wichtiger ist als die Wartung. Da jedoch auch Mikrocontroller immer leistungsfähiger werden, dürfte diesem Argument immer weniger Bedeutung zukommen.
Big hairy object
Ein ähnlicher, oft synonym gebrauchter Slang- Begriff ist der des Big hairy object. Als wesentlicher Unterschied wird hingegen angeführt, dass das Big hairy object, im Gegensatz zum God object, nicht die Kontrolle über das Programm übernimmt, sondern lediglich eine überladene Schnittstelle darstellt.
Wikimedia Foundation.