Definition
Convention over Configuration (CoC) ist ein Softwareentwicklungsprinzip, das darauf abzielt, den Aufwand für Konfiguration zu minimieren, indem es vordefinierte Standardwerte und -verhalten nutzt. Das Prinzip besagt, dass Entwickler nur dann explizit konfigurieren müssen, wenn sie von diesen Konventionen abweichen wollen. Dadurch soll die Komplexität bei der Einrichtung und Nutzung von Softwarekomponenten reduziert werden.
Das Konzept verfolgt das Ziel, die Produktivität zu steigern und Fehlerquellen zu verringern, indem es klare und konsistente Vorgaben macht. CoC ist besonders in Frameworks und Bibliotheken verbreitet, die Entwicklern einen schnellen Einstieg ermöglichen wollen, ohne dass umfangreiche Einstellungen notwendig sind. Die Konventionen betreffen häufig Namensgebung, Ordnerstrukturen oder Standardwerte für Parameter.
Hintergrund und Geschichte
Das Prinzip der Convention over Configuration wurde maßgeblich durch das Webframework Ruby on Rails populär, das 2004 von David Heinemeier Hansson vorgestellt wurde. Rails setzte CoC ein, um die Entwicklung von Webanwendungen zu vereinfachen und beschleunigen. Das Framework legte dabei viele Standardannahmen fest, etwa über Datenbanktabellen, Klassen- und Dateinamen, was die Konfiguration stark reduzierte.
Vor Rails war es üblich, dass Entwickler umfangreiche Konfigurationsdateien anlegen mussten, um Softwarekomponenten miteinander zu verbinden. CoC stellte einen Paradigmenwechsel dar, indem es klare Regeln und Standards definierte, die ohne explizite Konfiguration gelten. Dieses Prinzip wurde später von vielen anderen Frameworks und Plattformen übernommen.
Funktionsweise
Die Funktionsweise von Convention over Configuration basiert auf der Festlegung von Standardkonventionen, die automatisch angewendet werden, wenn keine explizite Konfiguration vorhanden ist. Beispielsweise kann ein Framework vorgeben, dass eine Klasse mit dem Namen „User“ automatisch mit einer Datenbanktabelle namens „users“ verbunden wird, sofern nicht anders konfiguriert.
Wenn Entwickler von diesen Konventionen abweichen möchten, können sie durch Konfigurationsdateien oder Codeanweisungen explizit andere Einstellungen vornehmen. Dadurch bleibt die Flexibilität erhalten, während in den meisten Fällen die Konventionen ausreichend sind und somit der Konfigurationsaufwand entfällt.
Einsatzgebiete
Convention over Configuration wird vor allem in der Webentwicklung eingesetzt, insbesondere in Frameworks wie Ruby on Rails, Django oder ASP.NET MVC. Diese Frameworks nutzen CoC, um Entwicklern einen schnellen Einstieg zu ermöglichen und die Anzahl der notwendigen Entscheidungen bei der Projektinitialisierung zu reduzieren.
Neben Webframeworks findet das Prinzip auch Anwendung in anderen Softwarebereichen, etwa bei Build-Tools, ORM-Systemen oder UI-Frameworks. Dort helfen Konventionen, wiederkehrende Aufgaben zu standardisieren und die Komplexität von Konfigurationsdateien zu verringern.
Abgrenzung zu verwandten Konzepten
Convention over Configuration wird oft mit dem Prinzip „Configuration over Convention“ verglichen, das in manchen Systemen bevorzugt wird. Während CoC Standardwerte und -verhalten vorgibt und nur bei Abweichungen Konfiguration erfordert, setzt Configuration over Convention auf umfangreiche Konfigurationsmöglichkeiten und lässt Konventionen weniger stark gelten.
Ein verwandtes Konzept ist „Don't Repeat Yourself“ (DRY), das darauf abzielt, Redundanzen im Code zu vermeiden. CoC kann als eine spezielle Ausprägung von DRY verstanden werden, da durch die Nutzung von Konventionen weniger Konfigurationscode geschrieben werden muss.