Was ist guter Code? Darüber besteht grundlegend Einigkeit, im Detail haben erfahrene Programmierer aber durchaus kontroverse Ansichten.
Obwohl Programmieren längst eine Ingenieursdisziplin ist, umweht es immer noch ein Hauch von Kunst. Zweifellos zeichnen einen guten Programmierer Sprachenkenntnis und Methodenwissen aus, Dinge, die man studieren kann, aber es bleibt ein Rest an Begabung und Intuition, den man hat oder nicht. Das spiegeln auch die beiden Bücher wider, die wir diesmal auf dieser Seite vorstellen. Die zwei Titel über gutes Programmieren gehen in vielen Punkten konform, vertreten in manchen Details aber ziemlich konträre Ansichten. Die Streitpunkte sind eben jene Stilfragen, die sich wissenschaftlich nicht entscheiden lassen.
So einfach wie möglich
Der erste Titel “Prinzipien des Softwaredesigns” stammt von John Ousterhout, einem Stanford-Professor und unter anderem Erfinder der Skriptsprache Tcl/Tk. Sein Mantra, das immer wieder den Ausgangspunkt der Überlegungen bildet, lautet: Das Reduzieren der Komplexität ist das A und O guter Programmierung. Alles Komplexe sei schwer verständlich, undurchsichtig, setze Detailkenntnisse voraus und sei schwer zu ändern, argumentiert Ousterhout. Guter Code dagegen sei einfach und klar, auf den ersten Blick offensichtlich und verberge Komplexität hinter einfach zu handhabenden Schnittstellen. Je mehr Funktionalität sich hinter einer möglichst einfachen Schnittstelle verberge (Ousterhout nennt das “Tiefe”), desto besser.
Das Buch geht ausführlich und anhand instruktiver Beispiele auf etliche Techniken ein, die helfen, derartigen Code zu schreiben: Kluge Modularisierung, die Wahl sprechender Namen, aussagekräftige Kommentare, konsistenter Programmierstil, geschicktes Testen, Priorisierung der Aufgaben, all das sind Themen jeweils eigener Kapitel. Behandelt werden zudem eine Reihe von aktuellen Trends in der Softwareentwicklung, darunter agile Entwicklung, Test Driven Development und verschiedene Design-Patterns.
Alles in allem bietet das Buch viel Material für alle, die sich im Programmieren verbessern wollen und nach einem Weg suchen, besser verständlichen, einfach wartbaren und eleganten Code zu schreiben.
Info
John Ousterhout
Prinzipien des Softwaredesigns
O’Reilly, 2022
190 Seiten, 25 Euro
ISBN: 978-3-96009-159-2
Meinungsvielfalt
Beim zweiten Titel handelt es sich im Unterschied zum ersten nicht um eine Neuerscheinung, sondern um einen Klassiker, der aber thematisch sehr gut zum bereits vorgestellten Titel passt: “Clean Code” von Robert C. Martin. Zur Einführung entwickelt Martin kein so dezidiertes Leitbild von guter Programmierung wie Ousterhout, sondern lässt eine Reihe bekannter Programmierer mit kurzen Statements zu Wort kommen, darunter den C++-Schöpfer Bjarne Stroustrup und den Wiki-Erfinder Ward Cunningham. Deren Maximen greifen dann einzelne Kapitel etwa zur Namensgebung, Fehlerbehandlung, Nebenläufigkeit, Refactoring, zur Anlage von Klassen und anderen Themen auf.
In vielen Aspekten ähneln sich die Aussagen beider Werke, interessant sind aber besonders die Unterschiede. So betrachtet Martin Kommentare als “bestenfalls ein erforderliches Übel”, wogegen Ousterhout sie für absolut notwendig hält, um Informationen zu liefern, die sich nicht leicht aus dem Code erschließen. Ein anderes Beispiel: Für Martin sollen Funktionen vor allem kurz sein und so wenig Argumente wie möglich übernehmen. Für Ousterhout spielt das keine Rolle, solange sie nur “tief” sind, also eine möglichst einfache Schnittstelle viel komplexe Funktionalität verbirgt. Auch bei Design-Patterns unterscheiden sich die Einstellungen grundlegend. Der von Martin eingangs zitierte Cunningham befürwortet ihre Verwendung vehement; Ousterhout sieht die Gefahr, dass sie oft zu flachen Klassen führen, die die Komplexität unnötig erhöhen.
Auch “Clean Code” spart nicht mit Beispielen und liefert eine Fülle bedenkenswerter Anregungen für das Schreiben von besseren Programmen. Im Ziel sind sich beide Bücher einig, oft stimmt auch der Weg überein, aber im Detail liefern sich die Autoren mit ihren individuellen Ansichten einen fruchtbaren Meinungsstreit.






