Die Namensgebung ist eines der schwierigsten Probleme in der Softwareentwicklung. Dies gilt für Funktionen, Klassen und sogar Pakete.
So gut wie jedes Projekt, das ich in den letzten Jahren gesehen habe, verfügt darüber: ein „Helpers“- oder „Utils“-Paket. Ausnahmslos handelt es sich bei diesem Paket um eine Ansammlung unterschiedlichster Dinge – eine bunte Mischung: einige String-Funktionen, ein einfacher Parser für irgendetwas, generische Datenstrukturen.
Woran erkennt man ein Helper-Paket? Nun, zum einen am Namen. Zum anderen enthält es verschiedenste Funktionalitäten. Viele Pakete in Ihrer Anwendung nutzen Teile davon.
Es gibt so etwas wie ein „Helper-Paket“, eine „Helper-Klasse“ oder eine „Helper-Funktion“ eigentlich gar nicht! Jede Zeile Code erfüllt einen bestimmten Zweck. Wenn das nicht der Fall ist, sollte man sie einfach entfernen. Wenn man sich die Code-Sammlung im „Helpers“-Paket genauer ansieht, stellt man fest, dass jede einzelne Funktionalität nur an einer einzigen Stelle verwendet wird. Warum verlagert man diese Funktionalität nicht direkt in das entsprechende Paket?
Ein klassisches Beispiel hierfür ist die Klasse `java.util.ArrayList` in Java. Diese Klasse stellt zwar eine Collection dar, doch das Paket `java.util` ist letztlich zu einer inkohärenten Mischung verschiedenster Funktionalitäten geworden. Was hat eine Liste in einem Paket zu suchen, das auch Kalender und Base64-Encoder enthält? Scala und Kotlin machen das besser und ordnen solche Datenstrukturen in einem eigenen „Collections“-Paket an.
Was man stattdessen tun kann
Anstatt willkürliche Code-Fragmente in einem „Helpers“-Paket zu sammeln, sollten Sie prüfen, wo der jeweilige Code tatsächlich verwendet wird, und ihn dorthin verschieben. Handelt es sich um Code, der an mehreren Stellen zum Einsatz kommt, haben Sie womöglich ein Konzept Ihrer Anwendung übersehen. Wenn der Code ein eigenes Paket rechtfertigt, wählen Sie einen Namen, der dessen eigentliche Funktion widerspiegelt.
Als Faustregel gilt: Wenn man das Paket nicht benennen kann, ohne Wörter wie „util“, „helper“ oder „common“ zu verwenden, ist die Paketgrenze falsch gewählt.
Abschließende Gedanken
Namensgebung ist schwierig. Allgemeine Pakete mit Namen wie „utils“ oder „helper“ sind wenig hilfreich; sie ziehen oft willkürliche Code-Fragmente an und entwickeln sich selbst zu einem unübersichtlichen Durcheinander. Überlegen Sie sich genau, welchen Zweck eine Klasse oder Funktion erfüllt, und ordnen Sie sie einem Paket zu, das diesen Zweck widerspiegelt. Bitte keine „Helper“-Pakete mehr!
Verfasst von

Arjan Molenaar
Unsere Ideen
Weitere Blogs
Contact




