Buchzusammenfassung: Code Complete

Apr 22 2023
von Steve McConnell
„Code Complete“ ist ein umfassender Leitfaden für Softwareentwickler, der sich auf die Verbesserung der Qualität und Wartbarkeit von Code konzentriert. Dieser Beitrag bietet eine Zusammenfassung und ich gehe auf einige Punkte basierend auf meinen Erfahrungen näher ein.

„Code Complete“ ist ein umfassender Leitfaden für Softwareentwickler, der sich auf die Verbesserung der Qualität und Wartbarkeit von Code konzentriert.

Dieser Beitrag bietet eine Zusammenfassung und ich gehe auf einige Punkte basierend auf meinen Erfahrungen näher ein.

Entwurf und Planung

Das Buch betont die Bedeutung einer gründlichen Planung und Gestaltung vor dem Schreiben von Code. Dazu gehört das Verständnis von Anforderungen, die Erstellung detaillierter Entwürfe und die Berücksichtigung potenzieller Probleme, um Probleme während der Implementierung zu minimieren.

Ein Entwickler erstellt ein detailliertes Designdokument für eine neue Funktion, in dem er die Gesamtarchitektur, Klassen und Methoden umreißt und die Interaktionen zwischen Komponenten definiert.

Obwohl das Upfront-Design auch in agilen Teams von wesentlicher Bedeutung ist, sollten Sie mit der Falle der großen Upfront-Design- und Analyse-Lähmung vorsichtig sein .

Sauberen und wartbaren Code schreiben

McConnell plädiert dafür, sauberen, selbsterklärenden Code mit aussagekräftigen Variablennamen, korrekter Einrückung und konsistenter Formatierung zu schreiben, damit er für andere einfacher zu verstehen und zu pflegen ist.

Anstatt beispielsweise kryptische Variablennamen wie aoder zu verwenden x, wählen Entwickler beschreibende Namen wie userInputund, totalAmountum die Lesbarkeit des Codes zu verbessern.

Codekommentare und Dokumentation

Das Buch betont, wie wichtig es ist, im Code klare und prägnante Kommentare bereitzustellen sowie eine ordnungsgemäße Dokumentation zu erstellen und zu pflegen, um zukünftigen Entwicklern das Verständnis des Systems und seines Zwecks zu erleichtern.

Ein Entwickler fügt Inline-Kommentare hinzu, um komplexe Logik zu erläutern, und pflegt eine aktuelle Dokumentation, die die gesamte Systemarchitektur und einzelne Module beschreibt.

Überbeanspruchen Sie diesen Rat nicht. Selbstdokumentation ist immer besser als Kommentare. Verwenden Sie Kommentare für das „Warum“ und selbstdokumentierten Code, um das „Wie“ zu dokumentieren.

Modularisierung und Kapselung

McConnell empfiehlt, Code mit klar definierten Modulen zu entwerfen und Implementierungsdetails zu kapseln, um eine einfachere Wartung, Tests und Wiederverwendung zu ermöglichen.

Ein Entwickler erstellt ein separates Modul für die Abwicklung von Datenbankoperationen, das Kapseln datenbankspezifischer Details und die Bereitstellung einer klaren API für andere Teile der Anwendung, z. B. ein Repository . Auf diese Weise können Sie Datenbankimplementierungen ändern und sogar eine Implementierung verwenden, die die Zeilen für Komponententests einfach in einem In-Memory-Array speichert.

Code Refactoring

Das Buch betont, wie wichtig es ist, Code regelmäßig zu überprüfen und umzugestalten, um seine Struktur, Lesbarkeit und Leistung zu verbessern, was letztendlich zu einer qualitativ hochwertigeren Software führt.

Ein Entwickler identifiziert einen Codeabschnitt mit schlechter Leistung und überarbeitet ihn, indem er Algorithmen optimiert und unnötige Berechnungen reduziert, was zu einer verbesserten Effizienz führt.

Bitte beachten Sie, dass durch Refactoring die Codestruktur geändert wird, ohne dass sich das Verhalten ändert. Wenn Sie das Verhalten des Codes ändern und gleichzeitig die Struktur ändern, handelt es sich NICHT um ein Refactoring. Tests sind der beste Weg, um sicherzustellen, dass sich nicht das Verhalten, sondern nur die Struktur ändert.

Fehlerbehandlung und defensive Programmierung

McConnell betont, wie wichtig es ist, potenzielle Fehler zu antizipieren und eine ordnungsgemäße Fehlerbehandlung zu implementieren sowie defensive Programmiertechniken einzusetzen, um robustere und zuverlässigere Software zu erstellen.

Ein Entwickler validiert Benutzereingaben, um unerwartetes Verhalten zu verhindern, verwendet Try-Catch-Blöcke zur Behandlung von Ausnahmen und fügt im gesamten Code Überprüfungen auf Null- oder ungültige Werte hinzu.

Testen und Debuggen

Das Buch behandelt verschiedene Testtechniken, darunter Unit-Tests, Integrationstests und Systemtests, sowie effektive Debugging-Strategien zur Identifizierung und Behebung von Problemen.

Ein Entwickler schreibt umfassende Unit-Tests für einzelne Geschäftsdomänenmodelle und stellt sicher, dass diese korrekt funktionieren und sicher in den Rest des Systems integriert werden können.

Codeüberprüfungen und Zusammenarbeit

McConnell betont die Bedeutung von Codeüberprüfungen und der Zusammenarbeit zwischen Teammitgliedern, um Wissen auszutauschen, potenzielle Probleme zu identifizieren und die Gesamtqualität der Software zu verbessern.

Ein Entwicklungsteam führt regelmäßig Codeüberprüfungen durch, bei denen die Mitglieder sich gegenseitig konstruktives Feedback zur Arbeit geben, was zu einer besseren Codequalität und einem stärkeren Teamzusammenhalt führt.

Allerdings könnte die Überprüfung zu spät kommen und einer der Entwickler könnte den Code auf der Grundlage einer Annahme erstellt haben, die in die falsche Richtung geht. Die Paarprogrammierung der Aufgabe von Anfang bis Ende in einem Bildschirm und einer Aufgabe ermöglicht es, dass das Feedback früher erfolgt und beide Entwickler ein mentales Modell des Problems erstellen können, damit sie im Laufe der Zeit bessere Leistungen erbringen können.

Durch die Anwendung der in „Code Complete“ beschriebenen Prinzipien und Best Practices können Softwareentwickler ihre Programmierfähigkeiten verbessern, wartbarere und zuverlässigere Software erstellen und letztendlich qualitativ hochwertigere Produkte liefern.

Danke fürs Lesen. Wenn Sie Feedback haben, kontaktieren Sie mich auf Twitter , LinkedIn oder Github .