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.

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.
— .
— , , .
, .
- . , .
- , . .
- . .
« , « ». , «», , . ».
, , , , — , , .
2. !
« — . , ».
.
, .
- — 20 10 .
- , .
. , .
. . (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

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 . , .