Antipattern

 

Wer schon etwas häufiger programmiert, wird möglicherweise wissen, daß Programmcode, der einfach nur funktioniert, deswegen noch lange kein guter Programmcode ist. Vielmehr ist es bei umfangreicheren Programmierprojekten sinnvoll, Anforderungen auf einer höheren Ebene an den Code zu stellen: Robustheit, leichte Wartbarkeit (Fehlersuche), unkomplizierte Erweiterbarkeit, Verständlichkeit, etc. Diese Eigenschaften werden durch die Struktur des Codes bedingt. Hierfür wurde im Zuge der technologischen Entwicklung eine Vielzahl von Regeln aufgestellt, welche die Erfüllung dieser Anforderungen sicherstellen sollen. Die meisten dieser Regeln stammen aus der professionellen Softwareentwicklung; dennoch kann es auch für den Hobbyprogrammierer durchaus interessant sein, mal einen Blick über den Zaun zu werfen.

Die vielleicht bekannteste Regelsammlung sind die Entwurfsmuster (Design Patterns). Sie liefern für viele wiederkehrende Aufgabenstellungen in der Programmierung mustergültige Vorgehensweisen für ihre Umsetzung. Design Patterns sind ein weites Feld; in diesem Zirkular sollen sie auch nicht im Fokus stehen, sondern vielmehr die Antipattern (der Begriff Design Pattern stand offensichtlich Pate für die Antipattern).

Der Begriff Antipattern impliziert schon, worum es geht: um Regeln, wie man es nach Möglichkeit nicht machen sollte. Antipattern sind Resultat jahrzehntelanger Entwicklung in der Softwaretechnik, wobei typische und wiederkehrende Fehler identifiziert und analysiert wurden.

Man kann diese Regeln grob in verschiedene Kategorien einteilen, wobei für unsere Zwecke Architektur- und Programmier-Antipatterns (s. den Wikipedia-Artikel zu Antipatterns als guten Einstiegspunkt für weitere Recherchen) die wichtigsten sind. Beispiele für unvorteilhafte Codierung sind

  • Gottobjekte
  • Spaghetti-Code
  • Copy-Paste-Programmierung
  • Magic Numbers
  • u.v.m.

Es kann ganz hilfreich sein, sich eine Überblick über Antipatterns zu verschaffen, über Verbesserungsmöglichkeiten am eigenen Code nachzudenken (natürlich je nach Kenntnisstand - von Hobbyprogrammierern kann nicht erwartet werden, alle Punkte zu verstehen oder zur Anwendung zu bringen), um etwaige Antipatterns zu beheben oder sie von vornherein zu vermeiden.

In enger Verwandtschaft zu den Antipatterns stehen die Code Smells. Während die Antipatterns noch etwas abstrakt daherkommen, beinhalten die Code Smells eher konkrete Handlungsanweisungen. Code Smells beschränken sich zudem, wie der Name es andeutet, auf nachteilige Merkmale im Programmcode.

Es stehen einige Heuristiken zur Verfügung, die helfen, die Qualität eigener Software zu steigern, und dem Programmierer das Leben leichter machen. In vielen Fällen läßt sich der Aufwand für Fehlersuche und die Kompliziertheit für Erweiterungen deutlich reduzieren - was auf der anderen Seite wiederum der Funktionalität eines Programms zugute kommen kann.