Clean Code Beispiele einfach erklärt + Cheat Sheet

Clean Code Guide Coding Lab Steffen Lippke Tutorials und Guides

Du möchtest Clean Code schreiben?

Dieses 3-teilige Tutorial gibt Dir die Code-Beispiele mit Tipps und Tricks für die Praxis!

Starten wir!

Was ist Clean Code?

Clean Code
besteht aus
logisch strukturierten und intuitiv-benannten Variablen und Funktionen,
die jeder mit
Grundwissen der Programmiersprache
in angemessener Zeit
überblicken und verstehen kann.

6 Gründe gegen Dirty Code

Clean Code klingt im ersten Moment "nutzlos". Die negativen Auswirkungen von Dirty Code motivieren Dich dazu Clean Code zu schreiben:

1. Dirty Code ist teuer

Die Entwicklung und Wartung von größeren Coding-Projekten mit unsauberem Code dauert länger und ist deshalb teurer. Bei unsauberem Code ist die Zusammenarbeit schwerer und Du verlierst schneller den Überblick.

2. Schneller in die Pleite

Einige Softwareunternehmen mussten Ihr Geschäft aufgeben, weil sie Ihre Fehler nicht rechtzeitig beheben konnten. Der Code war so verwirrend, dass ein Debuggen sehr zeitaufwendig ist. Die Supportverträge sind ausgelaufen und die Kunden wollten die Produkte nicht mehr. Bei Exploits müssen Software-Hersteller in wenigen Tagen bis Stunden einen Patch liefern!

3. Kann die Versetzung bedeuten

Manche Arbeitgeber haben strenge Benennungskonventionen und Vorschriften, die Du als Programmierer einhalten musst. Falls Du Dich nicht an die Regeln hältst, dann landest Du beim First-Level-Support.

4. Erschwert Dir die Arbeit

Jeder Programmierer kennt es. Bei einem größeren Dokument (ab 500 Zeilen) und schlechtem Code kannst Du den Überblick über die Funktionen und Variablen verlieren. Jedes weitere Feature erschwert die Arbeit mit den Abhängigkeiten enorm.

5. Keiner will Deinen Code lesen oder warten

Wenn ein Nutzer in Deinem Programm einen Bug findet, dann ist der Software-Hersteller in der Pflicht nachzubessern. Nicht immer bist Du die Person, welche den Bug lösen muss, sondern ein anderer Entwickler.

6. Anspruch an Dich

Selbst, wenn Du nicht professionell entwickelst, solltest Du auf Deinen Code achten. Ein Autor darf auch nicht nach Lust und Laune Dinge umbenennen.

Denke daran: Manchen Entwickler nehmen Clean Code zu ernst und treiben die Codierung auf die Spitze. Dein Clean Code muss nicht 100 % perfekt sein, sondern soll dem Zweck dienen, dass andere und Du selbst den Code verstehen.

Deshalb habe ich einen 3-teiligen Guide mit vielen Beispielen geschrieben, der Dir zeigt, wie Clean Code aussehen kann.

Der Ideal Clean Code

Um zu veranschaulichen, was sauberer Code ist, möchte ich ein vergleichbares Beispiel nennen:

Ein Autor wie King schreibt Bücher, die so gut geschrieben sind, dass der Leser diese (bei genügend Zeit) in einem Fluss lesen kann. Guter Code sollte wie ein gutes Buch sein. Dein Programmiercode ist der flüssige Erklärungstext für den Programmierer und dem Computer, wie das Programm funktioniert.

Was hat Clean Code mit Büchern zu tun?

Ein deutscher / englischer Satz besteht im Wesentlichen aus Nomen, Verben und Adjektiven.

Im Rahmen der Informatik ...

  • Nomen sind Klassen, Variablen und Objekte (var emloyee,order, seller)
  • Verben sind Funktionen (getOrders(), setName()
  • Adjektive sind Parameter (startTime, endtime)

Vom Deutschen zu Clean Code

Bsp: Du möchtest Minuten in Stunden umrechnen.

In Deutsch erklärst Du das so:

  • Berechne die Stundenanzahl, indem man die Minutenanzahl durch 60 teilt, nach unten rundet und die Stundenzahl zurückgibt.
  • Berechne die Minutenanzahl, indem man die Minutenanzahl modulo 60 nimmt und den Wert zurückgibt.
var minutenAnzahl = 129;
berechneStundenAnzahl(){
var stunden = minutenAnzahl / 60;
return Math.floor(stunden);
}
berechneMinutenAnzahl {
return (minutenAnzahl % 60)
}

Ein Algorithmus in der Informatik beschreibt eine festgelegte Reihenfolge von Handlungsschritten. „Analoge“ Algorithmen kennst Du aus Kochbüchern oder einer Bauanleitung Deines Schranks.

Motivation – Warum soll ich Clean Code nutzen?

Warum soll ich den Guide lesen? Gehen wir mal von dem Code aus, wie dieser viele Professoren und Dozenten an vielen Universitäten praktizieren:


var x1 = 9;
var y2 = 3;
function kgt(x1, y2){
     for(let i = 0; i <x1; i++){
         if((x1 % i) == 0 && (y2 % i) == 0  ){
             return x1
         }
     }
 }

Da der Code einen geringen Umfang besitzt, kann man die Variablen zuordnen. Wenn aber 100 Variablen und Funktionen nur aus kryptischen Abkürzungen bestehen, dann verlierst Du schnell den Überblick über den Code.

Variablen und Benennung in Clean Code

Eine gute Variable / Funktion hat 8-24 Zeichen, weil eine zu kurze Variable nicht eindeutig genug ist und eine zu lange schwer lesbar ist.

Manche Unternehmen schreiben den Programmierern die Benennungsschemas vor und Du musst Dich strikt daranhalten. Wenn Du privat programmierst, solltest Du  folgende Regeln beachten:

Benenne Deine Variablen, Funktionen und Parameter mit Namen, die den exakten Inhalt und die Aufgabe genau beschreibt.

Nehme Dir Zeit für die Benennung und finde einen passenden Namen.

Die Benennungsregeln gelten für Dateinamen, Schriftarten, Ordner… bzw. alles, was Du in einem Softwareprojekt benennen kannst.

Ändere eine Variable, wenn Du einen besseren Namen gefunden hast.

💣Coding Horror - So nicht!

Vermeide "allgmeine" Wörter wie data, string, varaible, information, text, number, json, response,....


var variable1;
String data;
String json;

get();
changes();
sum();

👌 Clean Code - So sollte Dein Code aussehen

Klar. Konkret. Verständlich. Der Name ist der Inhalt der Datenstruktur. Sei so spezifisch mit dem Namen wie möglich.



var hourOfOrder:number;
String articleDescriptionJSON;
var checkoutPaymentSum: number;

getSurNameClient()
changeOrderStatus()
sumProductsOfOrder();

Funktionen in Clean Code

Die Funktionen sind die Verben von gutem Code. Ein Funktionsnamen beschreibt die Tätigkeit, welche die Funktion erfüllt. Typisch für Funktionsnamen sind Präfixe wie get, set, calc, load, update, parse, ….

Benenne Funktionen mit ähnlichen Aufgaben mit dem gleichen Präfix!

Fetch- und get- bedeutet übersetzt das Gleiche, aber bleibe konsistent bei einer Benennung.  Die Sortierung und Bündelung von ähnlichen Funktionen ist mit gleichen Präfixen einfacher.

 Je kürzer eine Funktion, desto besser. Meine Empfehlung 5-70 Zeilen

Funktionen sollten kurz sein, weil eine Funktion, nur eine einzige Tätigkeit verrichten sollte:

  • HTTP-GET ausführen
  • HTTP-Inhalte parsen
  • Error Handling

Eine kurze Funktion hat den Vorteil, dass Du sie komplett überblicken kannst und den Code in kleine Abschnitte untergliedert, die Du wiederverwenden kannst (Das Dry Prinzip).

Kaskadiere Deine Funktionen!

Wenn Du viel Code hast, dann musst Du Deine Funktionen kaskadieren lassen.

Stelle Dir einen Baum vor. Die Wurzel des Baums stellt die Main-Funktion dar, die  Computer zuerst ausführt. Danach rufst Du die Unter-Funktionen auf. Die Unter-Funktionen dürfen weitere Unter-Funktionen nutzen.

💣Coding Horror - So nicht!

Bitte nicht allgemein benennen. Sei spezifisch. Vermeide lange Funktionen und packe nicht alles in eine Funktion!


function functionAll(){
    doSomeCrazyStuffNobodyUnderstands();
    machineLearningTurnOn();
    
    [... 400 Zeilen Code]
    
    callHelperOfHelperClass();
    doSomeCrazyStuffNobodyUnderstands2();
}

👌 Clean Code - So sollte Dein Code aussehen

Erstelle abstrahierte Ebenen von Funktionskaskaden. 1 Funktion = 1 Aufgabe und bitte mehr nicht.


main() {
	loadOrdersInMemory();
	prepareOrdersToDisplay();
	displayOnGUI()
} 
loadOrdersInMemory(){
	getOrdersByHTTP();
	getUserProfile();
}

prepareOrdersToDisplay() ...

Klassen als Clean Code

Die Klassen sind die Nomen unseres Clean Codes.

Deine Klassen sollen Personen, Dinge und Konzepte beschreiben. Die Attribute einer Klasse sind die Adjektive. Alle Benennung sollten mit Bedacht gewählt sein.

Halte Dich an Standards wie.

z. B., dass jede Klasse die typischen CRUD (create, read, update, delete) Methoden enthalten.

Ich empfehle eine toString-Methode für jede Klasse, die bei Debuggen schnell Aufschluss über den Inhalt eines Objekts einer Klasse geben soll. in Spring reicht die Annotation @ToString aus.

Modelliere echte Konzepte und beachte Standards in Klassen

💣Coding Horror - So nicht!

Die Klassen beschreiben konkrete Konzepte und Gegenstände... und nicht "Informationen"


class OneThing(){
    x1;
    contructor(x1){
        this.x1 =x1;
    }
    
    infoFunction(){
        return x1;
    }

}

👌 Clean Code - So sollte Dein Code aussehen

Stelle die Realität dar. Mit Begriffen, die jedem geläufig sind.


class Order(){
    isSent:boolean;
    
    constructor(isSent:boolean){
        this.isSent = isSent;
    }
    
    getSendStatus()...
    setSendStatus()...

}

Learnings für dieses Kapitel

  • Guter Code ist eine gute Bedienungsanleitung
  • Clean Code spart Zeit und Geld
  • Benenne Deine Variablen, Funktionen und Parameter mit Namen, die den exakten Inhalt und die Aufgabe genau beschreibt.
  • Benenne Funktionen mit ähnlichen Aufgaben mit dem gleichen Präfix
  • Kaskadiere Deine Funktionen
  • Modelliere echte Konzepte und beachte Standards in Klassen

Nächste Kapitel

Kapitel 2: Klare Strukturen und Format für den Clean Code
Der äußere Rahmen von Code dient dazu Überblick über das Projekt zu  behalten und Projekte schneller fertigzustellen.

Kapitel 3: Clean Code ist besser: Kürzen und Optimieren
Clean Code ist nicht nur eine Hülle. Richtig guter Code ist Speicher und CPU schonend!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.


Jeden Monat teile ich mit den Mitgliedern
4 neue praxisnahe ausführliche Tutorials (je 1000+ Wörter).


Trage Deine Mail, damit Du
Deine Coding + Hacking Skills erweitern kannst!

Die Website nutzt nur technisch notwendige Cookies.