Remarques sur le codestyle

Assez souvent, je rencontre une question sur la qualité du code: "Pourquoi est-il écrit de cette façon et pas ainsi?". Et j'explique à chaque fois. C'est pourquoi j'ai décidé d'écrire une sorte de note avec des explications.





La deuxième question qui se pose est: "Où avez-vous appris à écrire si joliment?" La réponse sera à la fin de l'article.






Un problème assez courant lors de l'écriture de code est qu'il ressemble à un texte solide et contient des zones problématiques qui compliquent non seulement la lecture, mais également la maintenance. Dans de tels cas, vous ne devez pas négliger l'utilisation de sauts de ligne et de caractères "espace" supplémentaires.





Je me suis souvenu d'une anecdote barbue sur des événements réels:





Le développeur lit son code écrit:





- aujourd'hui: super code cool moderne! J'écrirais toujours comme ça!





- hier: donc, je me suis arrêté ici. Ah!





- la semaine dernière: qu'est-ce que j'y faisais? ..





- le mois dernier: où est donc le problème avec la description?





- l'année dernière: casser les jambes de celui qui a écrit ce code!






Récemment, j'ai rencontré un tel morceau de code (je vais l'insérer avec une image pour ne pas perturber son apparence):





- , , ...





. . - .





. . , , ? , .






, .





- , - .





:





$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: Plusieurs personnes, y compris des messages en dehors de Habr, ont déjà écrit qu'il y avait des choses telles que PSR, code autocomplete, formatage de code dans l'EDI, cs-fixer, etc. Pensez-vous vraiment que je ne connais pas leur existence? Le problème, révélé dans l'article, n'est pas qu'ils ne sont pas utilisés, mais qu'est-ce qui empêche d'écrire dans un premier temps du code magnifiquement sans mettre le feu aux pets des autres développeurs? ..





PS2: Il se trouve que l'écrasante majorité des commentateurs ont compris les exemples de l'article, marquant son message principal. À cet égard, j'ai supprimé tous les exemples qui ne portent pas de charge sémantique et d'importance pour l'article en tant que tel.








All Articles