View on GitHub

club-lecture

Coder Proprement de Robert C. Martin

A propos de l’auteur

Robert C. Martin, dît “Oncle Bob”, est un ingénieur dans le domaine du logiciel. Il est principalement connu pour ses contributions à propos de la méthode Agile, de la gestion de projet, des principes SOLID et du développement dirigé par les tests.

Résumé du livre

Partant du constat que l’on aura toujours besoin de code, car il y aura toujours des exigences à exprimer, on se pose la question des raisons et du coût du désordre dans un code. La principale cause du désordre est la pression du temps, qui nous expose au risque de sous-évaluer le coût de la maintenance future lors d’un développement. La remise “à plus tard” du nettoyage et de la mise en ordre du code entraîne progressivement un ralentissement de la productivité car le code devient difficile à comprendre et faire évoluer. Ecrire du bon code est donc une question de survie professionelle.

Par la production d’un bon code, qui soit élégant, simple, efficace, explicite, et testé, on facilite l’évolution des projets de développement. Les objectifs principaux du livre sont donc de fournir des lignes directrices pour la rédaction et le formatage de code, une certaine connaissance des structures de données et les bonnes pratiques en matière de test de code. La finalité étant de pouvoir écrire du bon code, différencier le bon code du mauvais code et être capable de transformer du mauvais code en bon code.

Le conseil le plus général fourni par le livre est d’écrire du code qui révèle au mieux ses intentions. Si le code est imprécis, ou cache ses intentions (avec des noms peu clairs, ou prêtant à confusion), il devient plus difficile de le comprendre et donc de le corriger ou le faire évoluer. Dans le livre, une vaste part est donc dédiée au bon nommage des éléments du code, à leur bonne organisation (notamment la concision des fonctions, et des classes, et la définition claire de leurs objectifs), ainsi qu’à sa bonne présentation (utilisation d’un format qui facilite la lecture). Ces passages sont aussi bien dédiés à la présentation de bonnes pratique qu’à l’identification des mauvaises et de moyen de les corriger.

Une vaste part de ce livre est dédiée aux tests de programmes. Les tests sont aussi important que le code de production, car des tests désordonnés deviennent progressivement inutiles voir handicapant. L’auteur présente l’approche dirigée par les tests que l’on pourrait résumer à l’idée que les tests unitaires des fonctions d’un programme devrait systématiquement être écrits avant les dites fonctions, afin que celles-ci soit rédigées avec une idée claire du besoin à remplir, et avec l’optique de réussir le passage des tests.

Le livre aborde également certains principes SOLID, mais aussi la distinction entre objet et structure de données (et notamment leur anti-symétrie), ainsi que la loi de Démeter ou les question de liées au code concurrent.

Synthèse des commentaires des intervenants

Dans l’ensemble, la lecture de “Coder Proprement” serait bénéfique à n’importe quel développeur débutant ou intermédiaire. L’organisation globale du livre est bonne et l’on y voit bien où l’auteur veut nous emmener. Les règles exposées sont claires, pertinentes et cohérentes avec l’objectif. On note d’ailleurs que certaines pratiques qui n’étaient pas encore répandues à la sortie de ce livre sont aujourd’hui fortement rentrées dans les usages (par exemple sur le bon usage des commentaires).

Le livre est plutôt porté sur l’approche objet et n’expose donc pas ce qui est généralement fait pour les approches procédurale ou fonctionnelle, pour ne citer que celles-ci. Cela impacte une partie du livre, typiquement lorsque l’on parle de classe (qui n’existent même pas dans tous les langages objets) ou de gestion des erreurs à base d’exception (qui ne sont pas forcément utilisées hors de l’objet). Par ailleurs, certaines parties du livre sont pour ainsi dire complètement concentrées sur Java, la rendant beaucoup moins utiles si vous êtes adaptes d’un autre langage, il convient alors de se renseigner sur des outils équivalents. Même en ce qui concerne les outils Java, le livre commence malgré tout à accuser son âge, présentant des technologies qui ne sont plus utilisées, ou utilisées d’une manière très différente.

En conclusion, même si le livre commence à accuser son âge et reste très “Java-centré”, l’apport pour un programmeur débutant est indéniable sur les notions de base. Pour les notions plus avancées, il convient de prendre les idées avec des pincettes et de se renseigner plus sur les techniques employées dans la communauté du langage que l’on utilise.

Note globale : 3.5/5