PHP ist unsere derzeitige bevorzugte Sprache für die Projekte, die wir bearbeiten. Derzeit verwenden wir PHP 7.3.9
. Eines der vielen Prinzipien, denen wir in unserer Entwicklung folgen, ist „Clean Code“.
Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
Martin Fowler
Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
Martin Fowler
Einige „Clean Code“-Prinzipien, die wir folgen:
-
Sinnvolle und aussprechbare Ennglische Variablennamen
Wir versuchen, Namen zu verwenden, die Bedeutung haben und lesbare Namen haben können.
Anstatt von$variable = $date->format('y-m-d');
wir bemühen uns, einen Namen zu finden, der den Wert am besten beschreibt
$dateOfToday = $date->format('y-m-d');
-
Durchsuchbare Namen
Wir versuchen, durchsuchbare Werte zu benutzen.
Anstatt vonn$responseCode = $response->getValue(200);
wir sind bemüht, Namen auf Werte zu finden, die wir brauchen könnnen
$responseCode = $response->getValue(OK_RESPONSE);
-
Typ-Hinweis und Rückgabe-Typ-Hinweis (Type Hinting)
Je grösser die Anwendung, desto mehr Code. Je mehr Code vorhanden ist, desto wichtiger ist es, einen klaren Überblick darüber zu haben, welche Parameter die Methoden akzeptieren, was sie tun und was sie zurückgeben, ohne jede Methode erneut untersuchen zu müssen. Also anstatt das zu haben:
function myFunction($input) { // do something }
in unserem Code findest du etwas wie:
function isWorkingDay(string $input): bool { // do somthing }
-
Minimale Verschachtelung und vorzeitige Rückgabe
Um den Code lesbar und verständlich zu machen, reduzieren wir die Komplexität, indem wir verschachtelte if-else-Anweisungen nach Möglichkeit vermeiden. Also anstatt
function isWorkingDay(string $input): bool { $nameOfDay = strtolower($nameOfDay); if($nameOfDay === 'monday') { return true; } elseif($nameOfDay === 'tuesday') { return true; } elseif($nameOfDay === 'wednesday') { return true; } elseif($nameOfDay === 'thursday') { return true; } elseif($nameOfDay === 'friday') { return true; } return false; }
wir versuchen es wie folgt zu lösen:
const WORKING_DAYS = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday']; function isWorkingDay(string $input): bool { return in_array(strtolower($input), WORKING_DAYS)); }
Einen anderen Beispiel wäre:
function fibonacci(int $n) { if ($n < 50) { if ($n != 0) { if ($n != 1) { return fibonacci($n -1) + fibonacci($n -2); } else { if ($n < 0) { return 'Not supported'; } else { return 1; } } } else return 0; } } else { return 'Not supported'; } }
wir würden es so lösen:
function fibonacci(int $n): int { if ($n === 0 || $n === 1) { return 1; } if ($n < 0 || $n > 50) { throw ne \Exception('Integer must be between 0 and 50'); } return fibonacci($n - 1) + fibonacci($n - 2); }