Skip to main content
let's make IT happen

Nomen est Omen

Das Finden von passenden Namen ist eine zeitlose, am häufigsten verwendete und (wahrscheinlich) die wirkungsvollste Fähigkeit in der Softwareentwicklung. Passende Namen sind essenziell für leicht verständlichen Code: Der Code dokumentiert implizit und macht das (Weiter-)Entwickeln effizient.


Viele der angesehensten Bücher über Best Practices im Software-Engineering enthalten Kapitel über die Namensgebung, u.a.:
- Clean Code (Robert C. Martin) – «Variable Names»
- The Pragmatic Programmer (Andrew Hunt, Davis Thomas) – «Naming Things»
- Refactoring (Martin Fowler) – «Mysterious Name»
- Code Complete (Steve McConnell) – «Meaningful Names»
- The Practice of Programming (Brian W. Kernigham, Rob Pike) – «Names»


Namen steuern, wie Software-Ingenieure denken und miteinander kommunizieren. Das beeinflusst deren Produktivität und Zufriedenheit. Das wiederum prägt langfristig das ganze Team. Jedoch ist «Naming» keine leichte Aufgabe:
- Der Entwickler muss ein tiefes Verständnis über das Konzept (Domain) haben, an dem er arbeitet. Neue Konzepte sind oft nicht abschliessend definiert und ändern im Laufe der Zeit.
- Das Zielpublikum wechselt: Namen müssen oft von einem immer grösseren und vielfältigeren Publikum verstanden werden.
- Die Art und Weise, wie die Richtigkeit eines Namens beurteilt wird, ist subjektiv: Die Wahrscheinlichkeit, dass 2 Entwickler den gleichen Namen wählen, liegt zwischen 7 -18% (abhängig vom zu benennenden Objekt).
- Es ist schwierig, Namensgebung in eine automatische (statische) Code-Analyse zu integrieren.
Wichtige Kriterien für passende Namen sind:
- Verständlichkeit
   o Beschreibt das Konzept
   o Enthält Begriffe aus der (Problem-) Domäne
   o Keine Abkürzungen
- Prägnanz
   o Abstraktionslevel einhalten
   o Enthalten keine Metainformationen, Implementationsdetails und Leerwörter
- Konsistent
   o Genau 1 Name pro Konzept (Synonyme vermeiden)
   o Allgemeine Namenskonventionen einhalten (ev. Styleguide)
   o Konsistente Antonyme verwenden
- Unterscheidbarkeit
   o Homographe und Homophone vermeiden
   o Vermeiden von Begriffen, die mehrere Bedeutungen haben können (Polyseme)
   o Vermeiden von Begriffen mit unterschiedlicher technischer und nichttechnischer Bedeutung (z.B. «class Class» => besser: «class Course»)


Durch die praktische Anwendung fundierter Kriterien ist es einfacher leicht verständliche Namen zu finden, was die Softwareentwicklung für alle effizienter und angenehmer gestaltet.


Quelle:
Naming Things. The Hardest Problem in Software Engineering (Tom Benner)

 

Thomas Bossardt, Senior Software Entwickler, INTEGRATE Informatik AG