Código limpo: cinco pontos-chave de um livro de leitura obrigatória para programadores

Recentemente, escrevi sobre Cinco livros que mudaram meu estilo de programação . Nos comentários, vários leitores recomendaram "Código Limpo" de Robert S. Martin. Como resultado, li o livro e o achei digno de uma revisão aprofundada.





Sobre o livro



« » 2008 , Amazon. , « », Agile Manifesto . 4,4 Goodreads 13 000 . , , .



.



1. —



, — . , ( ) .



Em vez disso, começaremos com um esboço, adicionando detalhes gradualmente. Nós revisamos, refinamos e expandimos - trabalhamos em diferentes níveis de abstração até que o software funcione da maneira que precisamos. O software nunca está realmente concluído.



Esta é a essência principal do "Código Limpo". Ao longo do livro, o autor persegue a ideia de que software é arte e se assemelha à pintura. 



Belo código. Fonte: xkcd

Mas como você vai da escrita de um código simples para a arte da programação?



De acordo com Martin, as principais ferramentas à nossa disposição são refatoração contínua e desenvolvimento orientado a testes (TDD). Eles são inseparáveis ​​um do outro, como as duas faces de uma moeda. Aqui estão algumas definições.



— .



— , , .



, .



  1. . , .
  2. , . .
  3. . . 


« , « ». , «», , . ». 



, , , , — , , .



2. !



« — . , ». 



.

, .



  1. — 20 10 .
  2. , .


. , .



. . (SRP).



— « » , . , , , .



3.



« ». 



.

, , , . :





:





:



  • .
  • .
  • , .
  • , .


« » , , ,



.



  • Use nomes que revelem a intenção - por exemplo, int elapsedTimeInDays, não int dias ...
  • Use nomes pronunciáveis ​​- por exemplo, Cliente, não DtaRcrd102
  • Evite codificações - não use o prefixo m_ e não use a notação húngara .
  • Escolha uma palavra para cada conceito - não use nomes diferentes como buscar, recuperar ou obter para a mesma operação em essência.


4. A abstração é importante



Abstração. Fonte: Abstruse Goose

De acordo com o Clean Code, se quisermos garantir que nossas funções executem apenas uma tarefa, precisamos ter certeza de que todos os comandos em cada função estão no mesmo nível de abstração.



Martin ilustra isso com o seguinte exemplo de FitNesse :





. — hr , — . , , :





:



  • render () hr.
  • HtmlTag.
  • .


:



« ».



.



5. —



, , , , . , . 



, , , , . « », , « , ».



« . , . , ». 



.

,  , , . , , — . , — .





« » , . , , — , .



  , ,   . , , 13 , . , , , « », 2021 . , .



P.s. Zack Shapiro



. , , – .






All Articles