Das Autorenkollektiv beginnt mit einer strategischen Abwägung zwischen Testbarkeit und dem Private-Modifikator: Mehr Private-Methoden machen eine Klasse „nach außen robuster“, erschweren dem Unittest allerdings das Ansprechen der Member. Dieser „Konflikt“ zwischen zwei etablierten Regeln des Softwaredesigns dient als weiche Überleitung zur Überlegung weiterer Konfliktfelder, wo die reine Lehre des Softwaredesigns mit der Realität kollidiert.
Im Bereich der offenen Fragen fällt auf, dass das Autorenkollektiv den Fokus auf „moderne“ Systeme legt. Exception-Verarbeitung illustriert das Lehrbuch mit Fokus auf Multi-Threaded-Code; die diversen Async-Helferlein moderner Programmiersprachen werden ebenfalls im Zusammenspiel mit dem Exception-Handling beleuchtet. Im Bereich der API-Designs führt man das Hooks-Design-Pattern ein, das mit geringem Codierungs-Mehraufwand eine Steigerung der Flexibilität des Systems erreicht.
Optimieren ist diskutierbar!
Über die Frage, wie man Softwaresysteme optimiert, wurden bereits Gerichtsprozesse ausgefochten. Ein fehlgeschlagener Versuch einer Parallelisierung, die keinen
Performance-Gewinn liefert, dient hier als Einstieg in die Thematik. Die eigentlichen Überlegungen zur Optimierung von Codes konzentrieren sich auf die „Suche nach dem Hot Path“ und geben keinen Anlass zur Kritik. Im sechsten Kapitel „Simplicity vs. cost of maintenance for your API“ channeln die Autoren den legendären Software-Vordenker Joel Spolsky. Spezifischerweise geht er - unter anderem - auf das berühmte-berüchtigte Thema der „Einstellungsseite“ ein. Dass dies auch im Bereich einer API zu „Komplexität und Kundensupport-Anfragen“ führen kann, ist eine gewagte und doch logische Denkweise. Ein kurzer Exkurs zur Verarbeitung von Datum und Uhrzeit dient als Überleitung in ein weiteres Performance-bezogenes Thema. Data Locality - also die Frage, „wo“ in einem Cluster Informationen vorgehalten werden - ist in Big-Data-Systemen von nicht zu unterschätzender Wichtigkeit. Das Lehrbuch illustriert verschiedene Vorgehensweisen und geht darauf ein, wie man ein auf Apache Spark basierendes System optimiert.
Für die Illustration von Publisher-Subscriber-Beziehungen setzen Lelek und Skeet auf Apache Kafka, das ob der Nutzung von Java als Lehrsprache auch für Quereinsteiger von anderen Programmiersprachen problemlos verständlich sein dürfte.
Finishing Touches der Zukunftssicherheit
Insbesondere in Embedded-Systemen vergisst man als Entwickler nur allzu gern, in Firmware und Interfaces „Versionierung“ einzubauen, ein Problem, das sich bei der Weiterentwicklung des Systems nur allzu oft als gravierender Hemmschuh entpuppt. Lobenswerterweise geht das Autorenteam auch auf diese Thematik umfassend ein. Zu guter Letzt finden sich Überlegungen zu Dependency Injection und zu anderen „neuartigen“ Flexibilitäts-Steigerungs-Frameworks.
Lohnt es sich?
„Software Mistakes and Tradeoffs“ ist ein Lehrbuch für Fortgeschrittene. Wer einige Jahre Codier-Erfahrung mitbringt, kann die präsentierten Gedanken nachvollziehen und in die Praxis umsetzen. Der Rezensent, der mit Klassikern wie „Code Reading“ von Diomidis Spinellis aufgewachsen ist, fand den Text sehr interessant.
- title
- Software Mistakes and Tradeoffs: How to make good programming decisions
- subtitle
- Tomasz Lelek, Jon Skeet
- introduction
- Seiten: 416 Verlag: Manning, 2022 ISBN Print: 978-1617299209 Sprache: Englisch
- image
- Aufmacher_Mistakes Tradeoff