Muitas vezes me deparo com uma dúvida sobre a qualidade do código: "Por que está escrito assim e não assim?". E eu explico todas as vezes. Por isso resolvi escrever uma espécie de nota explicativa.
A segunda pergunta que surge é: "Onde você aprendeu a escrever tão bem?" A resposta estará no final do artigo.
Um problema bastante comum ao escrever código é que ele se parece com um texto sólido e contém áreas problemáticas que complicam não apenas a leitura, mas também a manutenção posterior. Nesses casos, você não deve negligenciar o uso de quebras de linha e caracteres de "espaço" adicionais.
Lembrei-me de uma anedota barbada sobre eventos reais:
O desenvolvedor lê seu código escrito:
- hoje: ótimo código moderno e legal! Eu sempre escreveria assim!
- ontem: então, parei aqui. Aha!
- semana passada: o que eu estava fazendo lá? ..
- mês passado: então onde está o problema com a descrição?
- ano passado: quebrar as pernas de quem escreveu este código!
Recentemente conheci um código assim (vou inseri-lo com uma imagem para não atrapalhar sua aparência):
- , , ...
. . - .
. . , , ? , .
, .
- , - .
:
$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: Várias pessoas, incluindo mensagens fora do Habr, já escreveram que existem coisas como PSR, preenchimento automático de código, formatação de código no IDE, cs-fixer e assim por diante. Você realmente acha que não estou ciente de sua existência? O problema, revelado no artigo, não é que eles não sejam usados, mas o que impede de inicialmente escrever códigos lindos sem incendiar outros desenvolvedores? ..
PS2: Acontece que a esmagadora maioria dos comentaristas pegou os exemplos do artigo, pontuando em sua mensagem principal. A este respeito, removi todos os exemplos que não carregam uma carga semântica e importância para o artigo como tal.