This is a draft cheat sheet. It is a work in progress and is not finished yet.
                    
        
                
        
            
                                
            
                
                                                | Blockbildung
                        
                            - Zeilen mit Ähnlicher Aufgabe nahe bei einander- Zeilen, die die selben Variablen verwenden nahe beieinander
 - Initialisierungen der Variablen kurz vor ihrer Verwendung
 Verwendung von if
                        
                                    
                        | - wahrscheinlichster Fall (Normalfall) immer in if – Bedingung 
- Sonderfälle im else-Zweig 
- bei mehreren if: wahrscheinlichster Fall oben, unwahrscheinlichster Fall im letzten else-Zweig 
- komplexe Bedingungen explizit machen und in Teilausdrücke zerlegen
Gegenbeispiel: if ( done ) ; // leeres if
 else {// Hier hier sind die eigentlichen Anweisungen
 }
 |  Switch-Case
                        
                                    
                        | Ordnen der case –Fälle- alphabetisch oder numerisch
 - Normalfall an der Spitze, dann abnehmende Wichtigkeit
 
 case-Fälle möglichst kurz
 Gesamte switch / case Anweisung sollte möglichst auf eine Bildschirmseite passen
 
 default
 - sinnvolle Standardwerte
 - zur Fehlerbehandlung
 
 Mehrere ähnliche switch-Blöcke im Programm ggf. durch Polymorphie ersetzen.
 |  |  | Zwischenergebnisse explizit machen
                        
                                    
                        | - Vermeidung des Nachschlagens und der Notizzettel … 
- Problem: Lange Aufrufketten (= Aufruf von Methoden auf Rückgabewerten  
  von Methoden *)
 if (smodule.getDependSubsystems().
 contains(subSysMod.getSubSystem())) {
    // Tuwas
 }
 
- Besser: Teilausdrücke durch eigene Variable explizit benannt
 List moduleDependees = smodule.getDependSubsystems();
 String ourSubSystem = subSysMod.getSubSystem();
 if (moduleDependees.contains(ourSubSystem)) {
    // tuwas
 }
 |  Komplexe if-Ausdrücke zerlegen
                        
                                    
                        | Beispiel für schwere Lesbarkeit durch komplexe Teilausdrücke
if (( elementIndex < 0 )||(MAX_ELEMENTS < elementIndex) || 
 Teilausdrücke jeweils über Variablen benennen(elementIndex == lastElementIndex)) { // tuwas }
 boolean finished = ( elementIndex < 0) || ( MAX_ELEMENTS < elementIndex);
 boolean repeatedEntry = (elementIndex == lastElementIndex);
 if (finished || repeatedEntry) { // tuwas }
 |  Vermeidung von if-KaskadenGute Methoden
                        
                                    
                        | - haben genau eine Aufgabe(Warnsignale: boolean Flags zur Steuerung einer Operation)
 - Code auf derselben Abstraktionsebene haben (wenn nein -> Teile in eigene Operationen/Routinen/Methoden auslagern)
 
 Übergebene Parameter am Anfang der Methode/Operation/Routine prüfen, bei Fehlern sofort zurückspringen
 
 Eventuell: Vergleichslogik überarbeiten
 - Logische Bedingungen und if umdrehen (negieren)
 - Fallunterscheidungen anders schneiden
 - Bei gleichartigen Fällen: switch einführen
 - Methode sollte nicht mehr als 50 Zeilen lang sein
 |  |