Textantrieb

Blog

16.01.2018

Despotismus der Namen

Die Softwareentwicklung leidet unter einem kräftezehrenden Despotismus, nämlich dem der einfältigen Namenssysteme. Die aktuellen Mittel sind armselig. Für jede Einheit darf es nur einen Namen geben und dieser muss von Anfang an bestimmt werden. Da Einheiten, die aus verschiedenen Systemen stammen, nun einmal unterschiedliche Namen tragen, gibt es unzählige Stellen im Quellcode, in denen ein und dieselbe Zuordnung von Namen explizit vorgenommen werden muss. Das erfordert Handarbeit und führt zu umständlicherem und wartungsintensiverem Quellcode. Eine nachträgliche Umbenennung ist desto schwieriger, je größer der betroffene Bereich ist. Was für kleinere Programme noch machbar ist, wird für größere Softwaresysteme von aufwändig über schwer zu vertretend bis unmöglich. Im realen Programmieralltag steht man mit gebundenen Händen vor Quellcode mit lauter unpassenden, unklaren, oder inkonsistenten Namen, die das Verständnis erschweren und müselige Arbeit verursachen. Ganz zu schweigen von den Kämpfen innerhalb der Teams, um den einen oder den anderen Stil der Namensgebung durchzusetzen. Die Herrschaft der einfältigen Namenssysteme stört die Softwareentwicklung und die Teamarbeit. Wir nehmen diese jedoch unkritisch im Kauf, so wie man es im Mittelalter im Kauf genommen hat, dass der Herrscher über Wohl und Wehe der Geherrschten bestimmt. Wie jede erdrückende Herrschaft persistiert sie teils aus Unwissen, teils aus Unvermögen der Unterdrückten. Das Dogma, das bezüglich der Namen zu brechen gilt, ist der Glaubenssatz, dass jedes Softwaresystem genau einen Namensraum haben und die externen Namenssysteme ignorieren muss. Da die Wirklichkeit nicht so ist aber die Systeme es nicht unterstützen, fällt die ganze Last beim Entwickler, der im Einzelfall aufwändig und fehleranfällig die Konflikte zurecht biegen muss. Die Chance zur strukturellen Systemverbesserung liegt darin, auf Systemebene mehrere Namensräume und deren Zusammenspiel zu unterstützen. Das wird ein Befreiungsschlag für die Softwareentwicklung sein, die plötzlich viel flinker und inhaltlich fokusierter agieren wird.