Schluss mit Frust: Clean Code hilft bei der Softwarequalität
Seite 2: Menschen machen Fehler
Ein weiterer ausschlaggebender Faktor für schlechten Code ist der Mensch. Selbst mit den besten Absichten im Team passieren irgendwann Fehler. Typische Gründe dafür können Zeitdruck, Leistungsdruck, Konflikte im Team, Überlastung oder Fehlentscheidungen sein. Schritt für Schritt geht dann mit der Qualität des Quellcodes auch die des Softwareprojekts bergab.
Beim Implementieren von Anwendungen gilt die grobe Faustregel: Das Verhältnis zwischen Code schreiben und Code lesen liegt unter idealen Bedingungen bei 1:10. Das bedeutet, dass Entwickler mindestens hundert Zeilen Code lesen und verstehen müssen, um zehn Zeilen Code zu schreiben. Enthält ein großes Softwareprojekt viel unsauberen und schlecht dokumentierten Code, der sich nicht intuitiv verstehen lässt, verschlechtert sich das Verhältnis mitunter sogar deutlich.
Anhand des im nachfolgenden Listing gezeigten Beispiels mit bewusst verunstaltetem Code lässt sich die Situation verdeutlichen. Nur mit viel Zeit und Mühe ist erkennbar, welchem Zweck diese Anwendung dient. Obwohl es sich um ein einfaches Programm handelt – es zählt Wort-Duplikate und gibt diese aus, ist der Code schwer lesbar, da er verschiedene Prinzipien verletzt.
public class Main { public static void main(String[] args) {
String s = "Ohne Clean Code ist Code nicht wartbar.";
int yc;
s=s.toLowerCase();
String strings[]=s.split(" ");
start();
for(int i = 0; i<strings.length; i++) {
yc = 1;
for(int j = i+1; j<strings.length; j++) {
if(strings[i].equals(strings[j])) {
​ yc++;
​ strings[j] = "0";
}
} if(yc > 1 && strings[i] != "0") System.out.println(strings[i]);
}
}
private static void start() {
System.out.println("Duplikate: ");
}
}
Kein Entwickler möchte freiwillig an einer solch unsauberen Codebasis arbeiten. Jede weitere Zeile Code fordert mehr Zeit und einen höheren Aufwand. Da sich im Team häufig niemand um die Verbesserung des Codes kümmert, verschlechtert sich der Zustand zusehends. Die Entwicklung wird mit jeder kleinen Änderung teurer, die Folgen sind steigender Frust und eine sinkende Motivation im Team.
Beim Vergleich mit der Restaurantküche drängt sich das Bild des sich stapelnden, dreckigen Geschirrs auf, das nie abgewaschen und wegräumt wird. Die Teller stapeln sich so lange, bis kein Koch mehr in dieser Küche arbeiten möchte.
Solche "gestapelten Teller" bezeichnet man in der Softwareentwicklung als technische Schulden. Wer dem Problem nicht entgegenwirkt, riskiert einen wirtschaftlichen Totalschaden des Projekts. Irgendwann wächst der Haufen an Aufräumarbeiten so hoch, dass es sich eher lohnt, die Software neu zuschreiben.
Wie Clean Code bei der Softwarequalität hilft
Funktioniert in einem Projekt die Technik nicht, bekommen dafür meist Techniker die Schuld in die Schuhe geschoben. Geht es hingegen um die Software, müssen in der Regel Entwicklerinnen und Entwickler als Sündenböcke herhalten. Wachsen die durch unsauberen Code verursachten technischen Schulden in Höhe, beginnt meist die Suche nach einem Schuldigen. Dabei spielt es keine Rolle, ob die Qualitätsmängel durch Fehler oder zu hohen Aufwand verursacht sind – Entwickler haben diese Situation zugelassen und daher mitzuverantworten.
Mit Clean Code können die Betroffenen den technischen Schulden jedoch aktiv entgegenwirken und die Qualität im Softwareprojekt langfristig gewährleisten. Es gilt lediglich, einen Anfang zu machen und sich an den Geschirrstapel heranzuwagen – um im Bild der Küche zu bleiben. Das Ziel ist eine saubere Küche, respektive sauberer Code.
(Bild:Â Khaled ElAdawy/Shutterstock.com)
Da Softwareprojekte nur selten "auf der grünen Wiese" starten, müssen Entwickler meist Koch, Putzkraft und Küchenmonteur zugleich sein, um den Code sauber zu halten und durchgängig zu optimieren, während kontinuierlich neue Features hinzukommen und Fehler zu bereinigen sind.
Was ist Clean Code?
Clean Code zeichnet sich dadurch aus, dass er sich in kurzer Zeit und mit wenig Aufwand verstehen lässt. Dabei folgt sauberer Code den folgenden Grundprinzipien:
- Lesbarkeit
- Ăśbersichtlichkeit
- Verständlichkeit
- Erweiterbarkeit
- Testbarkeit
ErfĂĽllt Code diese Kriterien, ergeben sich fĂĽr alle Projektbeteiligten Vorteile:
- Die technischen Schulden innerhalb des Projekts verringern sich, die Projektarbeit läuft effizienter und die langfristige Wartbarkeit ist gewährleistet.
- Die Software sowie geplante Änderungen daran bleiben stabil.
- Das Implementieren neuer Anforderungen oder Fehlerbehebungen lässt sich mit verkürztem Zeitaufwand umsetzen.
Ein nach den Clean-Code-Prinzipien umgesetztes Projekt verschafft Entwicklerinnen und Entwicklern erhebliche Arbeitserleichterung, trägt zu höherer Motivation bei und vermeidet auch an stressigen Tagen aufkommenden Frust, da beim Programmieren auf einer sauberen Codebasis weniger Reibungspunkte entstehen. Darüber hinaus profitiert das Management von geringeren Entwicklungskosten und einem motiviert arbeitenden Team. Nicht zuletzt lässt sich die von Auftraggebern und Nutzern der Software erwartete hohe Qualität der Anwendung leichter gewährleisten.
Clean Code in der Praxis umsetzen
Wie aber lässt sich Clean Code in einem realen Softwareprojekt erfolgreich umsetzen? Projektleiter, Product Owner sowie Entwicklerinnen und Entwickler müssen dabei einige wichtige Aspekte beachten.
Die größte Herausforderung ist ein unzureichendes Budget. Die für das notwendige Refactoring des Codes vom Entwicklungsteam geforderte Zeit ist meist zu knapp bemessen – häufig als Folge einer zu geringen Aufwandsschätzung zum Projektstart. Wie im analogen Beispiel der Restaurantküche lassen sich solche Planungsdefizite nachträglich nur schwer in den Griff bekommen. Plant ein Koch etwa fünfzehn Minuten Zubereitungszeit für ein Gericht ein, vergisst aber die zusätzlich notwendigen zehn Minuten für die Aufräum- und Säuberungsarbeiten der Küche, droht ihm schon nach drei bis vier Gerichten nicht nur ein Zeitproblem, sondern auch die Qualität gerät in Gefahr. Die zwangsläufige Folge sind Beschwerden der Gäste sowie lange Wartezeiten in der Küche.