Clean Code

Jede Funktion macht genau eine Sache

Damit wird sichergestellt das dieser eine klare API und Funktion hat und der Nutzer einer Methode nicht überrascht wird, zB indem es zu einem unerwarteten Seiteneffekt führt. Beispiele:

  • „readPersonById“ ändern zudem auch den Status in der DB, weil es den Zugriff protokolliert
  • „formatDate“ vom DateFormatter führt zu einem Fehler, weil statisch auf eine Lokalisierungsdatei zugegriffen wird, die erst geladen werden muss, welche sich aber in einem anderen Modul befindet
  • „readFile“ löscht auch die Datei nach dem einlesen

Sollte lesbar sein

Variablen und Methoden drücken das aus, für was sie stehen z.B.

  • „Magic Numbers“ wurden als Konstanten definiert und sprechend benannt
  • Komplizierte IF Prüfungen wurden als eigene benannte Funktionen extrahiert

dadurch sollte sich eine Art lesbarer Code ergeben.

Kommentare sollten weitgehend nicht notwendig sein

Durch die Verwendung von sprechenden Methoden- und Variablennamen sind weitere Kommentare nicht notwendig. Wenn überhaupt dann auf Klassen bzw. Public-Methoden ebene ein Verweis auf JIRA oder Confluence stehen, bzw. die Verantwortung eines Services abgegrenzt werden.

Code einer Methode sollte der Erwartung entsprechen

Ein Entwickler sollte beim lesen der Implementierung einer Methode möglichst nicht überrascht werden. Da er aufgrund des Methodennamen bereits rückschließen konnte wie die Methode aufgebaut ist, bzw. was diese macht.

Der Code sollte einfach zu verstehen sein

Jeder im Team sollte den Code schnell erfassen und ändern können, z.B. nach einem Jahr wenn man selbst die fachlichen Anforderungen weitergehen vergessen hat, warum der Code so ist.

Darf keine zirkulären Abhängigkeiten haben

Jedes Modul modifiziert nur seinen eigenen Status

Paul Sterl has written 52 articles

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>