zurück zum Artikel

Softwareentwicklung: Antipatterns – die böse Schwester der Design Patterns

Rainer Grimm

(Bild: Sashkin/Shutterstock.com)

Ein Antipattern ist eine bewährte Methode, sich selbst in den Fuß zu schießen. Weshalb sie dennoch verbreitet sind und was mit ihnen schief läuft.

Ein Antipattern ist eine bewährte Methode, um sich selbst in den Fuß zu schießen. Der Begriff Antipattern wurde von Andrew Koenig [1] geprägt, und es ist ziemlich unterhaltsam, darüber zu lesen. Das Buch "Design Patterns: Elements of Reusable Object-Oriented Software [2]" (Design Patterns), das 1994 veröffentlicht wurde, definiert Antipatterns als einen "commonly-used process, structure or pattern of action that, despite initially appearing to be an appropriate and effective response to a problem, has more bad consequences than good ones."

1998 wurde der Begriff dann dank des Buchs "Antipatterns: Refactoring Software, Architectures, and Projects in Crisis [3]" (Antipatterns) populär. Es definierte Antipatterns als "specific repeated practices in software architecture, software design, and software project management that initially appear to be beneficial, but ultimately result in bad consequences that outweigh hoped-for advantages."

Kurz gesagt: Ein Antipattern ist eine häufig angewandte Praxis, die mehr schlechte als gute Folgen hat.

Im folgenden Absatz werden einige Theorien über Antipatterns in aller Kürze vorgestellt. Das Konzept basiert auf dem Buch "Antipatterns: Refactoring Software, Architectures, and Projects in Crisis [4]", in dem ausführlichere Informationen zu finden sind.

Ein Antipattern ist ähnlich wie ein Design Pattern eine literarische Form und vereinfacht die Kommunikation und Beschreibung eines häufig auftretenden Problems. Oft ist es ein Muster, das im falschen Kontext angewendet wird. Folgendes sind die sieben Hauptursachen für Antipatterns:

Als Gegenmaßnahme dafür müssen beim Softwaredesign die folgenden elementaren Kräfte bei der Entscheidungsfindung berücksichtigt werden:

Jedes Antipattern besitzt die folgenden drei Komponenten:

Das Buch Antipatterns stellt drei typische Bereiche für Antipatterns vor:

Nun kommt der unterhaltsame Teil dieses Artikels: Ich werde einige Antipattern vorstellen, die der Klassifizierung des Antipatterns-Buchs folgen. Darüber hinaus enthält die Aufzählung einige Antipatterns aus anderen Quellen und offensichtliche Gründe für die vorgestellten Anti-Muster.

In meinem nächsten Beitrag im Blog "Modernes C++" werde ich über die klassischen Entwurfsmuster schreiben. Den Anfang werden die Erzeugungsmuster machen. (sih [11])


URL dieses Artikels:
https://www.heise.de/-7239865

Links in diesem Artikel:
[1] https://en.wikipedia.org/wiki/Andrew_Koenig_(programmer)
[2] https://en.wikipedia.org/wiki/Design_Patterns
[3] https://en.wikipedia.org/wiki/AntiPatterns
[4] https://en.wikipedia.org/wiki/AntiPatterns
[5] https://de.wikipedia.org/wiki/Anti-Pattern
[6] https://wiki.c2.com/?GodClass
[7] https://en.wikipedia.org/wiki/Spaghetti_code
[8] https://en.wikipedia.org/wiki/Big_ball_of_mud
[9] https://en.wikipedia.org/wiki/Brooks%27s_law
[10] https://en.wikipedia.org/wiki/Death_march_(project_management)
[11] mailto:sih@ix.de