Hinweise zum Codestyle

Sehr oft stoße ich auf eine Frage zur Qualität des Codes: "Warum ist er so geschrieben und nicht so?". Und ich erkläre jedes Mal. Deshalb habe ich beschlossen, eine Art Notiz mit Erklärungen zu schreiben.





Die zweite Frage lautet: "Wo hast du gelernt, so schön zu schreiben?" Die Antwort darauf wird am Ende des Artikels sein.






Ein ziemlich häufiges Problem beim Schreiben von Code besteht darin, dass er wie ein fester Text aussieht und Problembereiche enthält, die nicht nur das Lesen, sondern auch die weitere Wartung erschweren. In solchen Fällen sollten Sie die Verwendung von Zeilenumbrüchen und zusätzlichen Leerzeichen nicht vernachlässigen.





Ich erinnerte mich an eine bärtige Anekdote über reale Ereignisse:





Der Entwickler liest seinen Code geschrieben:





- heute: toller moderner cooler Code! Ich würde immer so schreiben!





- gestern: also habe ich hier angehalten. Aha!





- letzte Woche: Was habe ich dort gemacht?





- letzten Monat: Wo liegt also das Problem mit der Beschreibung?





- letztes Jahr: um die Beine desjenigen zu brechen, der diesen Code geschrieben hat!






Kürzlich habe ich einen solchen Code getroffen (ich werde ihn mit einem Bild einfügen, um sein Erscheinungsbild nicht zu stören):





- , , ...





. . - .





. . , , ? , .






, .





- , - .





:





$salaryFirstBaseEmployer = $employer->salaryBases->first()->salary_base;
$salaryLastBaseEmployer = $employer->salaryBases->last()->salary_base;
$begin = Carbon::parse('2020-05-01')->startOfMonth()->startOfDay();
$end = $begin->clone()->endOfMonth()->endOfDay();
$endMonth = $begin->clone()->endOfMonth();
$startPeriod = new CarbonPeriod($begin, $end);
$endPeriod = new CarbonPeriod($begin, $end);
      
      



, , , :





$salaryFirstBaseEmployer = $employer->salaryBases->first()->salary_base;
$salaryLastBaseEmployer  = $employer->salaryBases->last()->salary_base;

$begin = Carbon::parse('2020-05-01')->startOfMonth()->startOfDay();

$end      = $begin->clone()->endOfMonth()->endOfDay();
$endMonth = $begin->clone()->endOfMonth();

$startPeriod = new CarbonPeriod($begin, $end);
$endPeriod   = new CarbonPeriod($begin, $end);
      
      



:





, -, .





, .





PS: Mehrere Personen, einschließlich Nachrichten außerhalb von Habr, haben bereits geschrieben, dass es solche Dinge wie PSR, automatische Autovervollständigung des Codes, Code-Formatierung in der IDE, cs-fixer usw. gibt. Glaubst du wirklich, dass ich mir ihrer Existenz nicht bewusst bin? Das Problem, das im Artikel aufgedeckt wird, ist nicht, dass sie nicht verwendet werden, aber was hindert sie daran, anfänglich schönen Code zu schreiben, ohne die Fürze anderer Entwickler in Brand zu setzen?





PS2: So kam es, dass die überwiegende Mehrheit der Kommentatoren die Beispiele im Artikel aufgegriffen und die Hauptbotschaft bewertet hat. In diesem Zusammenhang habe ich alle Beispiele entfernt, die keine semantische Last und Bedeutung für den Artikel als solchen haben.








All Articles