J'ai récemment écrit sur cinq livres qui ont changé mon style de programmation . Dans les commentaires, plusieurs lecteurs ont recommandé "Clean Code" de Robert S. Martin. En conséquence, j'ai lu le livre et je l'ai trouvé digne d'une revue approfondie.
À propos du livre
« » 2008 , Amazon. , « », Agile Manifesto . 4,4 Goodreads 13 000 . , , .
.
1. —
, — . , ( ) .
Nous allons plutôt commencer par un croquis, en ajoutant progressivement des détails. Nous révisons, perfectionnons et développons - nous travaillons à différents niveaux d'abstraction jusqu'à ce que le logiciel fonctionne comme nous en avons besoin. Le logiciel n'est jamais vraiment terminé.
C'est l'essence principale du "Clean Code". Tout au long du livre, l'auteur poursuit l'idée que le logiciel est un art et s'apparente à la peinture.
Beau code. Source: xkcd
Mais comment passer de l'écriture de code simple à l'art de la programmation?
Selon Martin, les principaux outils dont nous disposons sont la refactorisation continue et le développement piloté par les tests (TDD). Ils sont inséparables l'un de l'autre, comme les deux faces d'une pièce de monnaie. Voici quelques définitions.
— .
— , , .
, .
- . , .
- , . .
- . .
« , « ». , «», , . ».
, , , , — , , .
2. !
« — . , ».
.
, .
- — 20 10 .
- , .
. , .
. . (SRP).
— « » , . , , , .
3.
« ».
.
, , , . :
:
:
- .
- .
- , .
- , .
.
- Utilisez des noms qui révèlent l'intention - par exemple, int elapsedTimeInDays, pas int days ...
- Utilisez des noms prononcables - par exemple, Client, pas DtaRcrd102
- Évitez les encodages - n'utilisez pas le préfixe m_ et n'utilisez pas la notation hongroise .
- Choisissez un mot pour chaque concept - n'utilisez pas des noms différents comme chercher, récupérer, obtenir pour la même opération en substance.
4. L'abstraction est importante
Abstraction. Source: oie abstruse
Selon Clean Code, si nous voulons nous assurer que nos fonctions effectuent une seule tâche, nous devons nous assurer que toutes les commandes de chaque fonction sont au même niveau d'abstraction.
Martin illustre cela avec l'exemple suivant de FitNesse :
. — hr , — . , , :
:
- render () hr.
- HtmlTag.
- .
:
« ».
.
5. —
, , , , . , .
, , , , . « », , « , ».
« . , . , ».
.
, , , . , , — . , — .
« » , . , , — , .
, , . , , 13 , . , , , « », 2021 . , .