Note de lecture : Clean Architecture, par Robert C. Martin

Note : 5 ; Agréable à lire, mais beaucoup de “recyclage », beaucoup de verbiage et peu d’information nouvelle.

Robert Martin est sans contestations possibles un des maîtres du craftsmanship. Je l’ai découvert avec son « C++ Applications Using the Booch Method » qui fut un régal. Son « Clean Code » et plus modestement son « Clean Coder » ont popularisé le craftsmanship et les concepts SOLID. Il m’est difficile d’avouer que j’ai eu du mal à trouver ici des idées nouvelles par rapport à ses écrits précédents. L’ouvrage atteint les 370 pages mais ce volume me parait être là pour donner le change.

Ainsi la première partie composée de 2 chapitres ne dit pas grand-chose, si ce n’est qu’il ne faut pas faire de concession sur la qualité de l’architecture. Une position pas vraiment nouvelle de la part de l’auteur.

La seconde partie fait partie des éléments nouveaux apportés par Uncle Bob : elle est consacrée aux paradigmes des langages de programmation et est composée de 4 chapitres, soit un peu plus de 35 pages. L’auteur nous présente ces paradigmes comme autant de contraintes, de possibilités que l’on enlève au programmeur pour chacune d’entre-elle :

  • La programmation structurée impose une discipline sur le transfert de contrôle direct.
  • La programmation orientée objet impose une discipline sur le transfert de contrôle indirect.
  • La programmation fonctionnelle impose une discipline sur l’affectation de variables.

On en arrive au carrément moins bien, la troisième partie « design principles » qui sur une quarantaine de pages et 5 chapitre nous assène pour la nième fois les principes SOLID. C’est fort bien écrit mais ça sent franchement le réchauffé. Je passe.

Quarante pages aussi mais cette fois sur 3 chapitres pour la 4ème partie « component principles ». Il ne s’agit ni plus ni moins qu’une tentative de l’auteur de ramener ses principes de conception à un niveau architectural. Ça sent le recyclage. En fait j’y trouve même un peu de réchauffé aussi avec le certes excellent mais déjà vu diagramme dépendance / abstraction. Les autres principes (cohésion, closure commune) étant surtout emprunté à Bertrand Meyer.

La 5ème partie, c’est un peu la dernière chance (mais ce n’est pas la dernière) et elle pèse 135 pages pour pas moins de 15 chapitres ! Le moins que l’on puisse dire est que ça commence doucement, avec quelques propriétés générales (agrémentées d’anecdotes du « bon vieux temps ») ensuite un peu plus développées dans les quelques chapitres suivants : d’abord avec la notion d’indépendance, déjà évoquée avec le principe DIP et raffiné ici avec le principe d’indépendance par rapport au device. Ensuite avec la notion de « frontière » qui conduit Robert Martin à promouvoir « l’architecture plugin », autrement dit, port et adapters.

On se rapproche du cœur du sujet au chapitre 21 « screaming architecture », mais c’est surtout le prélude au vrai truc. Le chapitre 22 dont le titre fait écho à celui du livre nous éclaire sur l’architecture cible proposée par l’auteur. Elle s’approche de très près de l’architecture hexagonale d’Alistair Cockburn. Celle de Robert Martin m’apparait un peu plus aboutie. Les chapitres suivants font chacun un focus sur un aspect particulier de cette architecture en oignon. Une mention particulière au « humble object » qui suggère de splitter les parties techniques en deux : l’une testable et « techno-free » et l’une purement techno. Une approche qui s’applique bien aux frameworks IHM et aux mappers BDD.

Le chapitre 27 attaque directement l’architecture microservices en taxant ses promesses de sophisme. Mais cela semble surtout résulter d’une incompréhension de l’auteur qui applique une vision « composants » à une approche qui ne l’est pas. D’ailleurs c’est cette vision composant que promeut l’auteur, agrémentée d’une inversion de dépendance. Bref, je ne vais pas le suivre sur ce chemin.

La 5ème partie s’intitule « details ». Elle sert de tribune à l’auteur pour défendre l’idée que la persistance, le Web et les frameworks sont des « détails » au sens de l’architecture. J’achète l’idée mais j’aurais préféré une prose plus solide qu’un simple argumentaire littéraire. C’est bien léger et uncle Bob nous avait habitué à mieux. L’étude de cas montre un certain intérêt. En tout cas elle est claire et l’auteur n’a pas perdu la main à cet égard. Elle démontre la vision composant dont je parlais plus haut et que je considère en opposition avec l’approche microservice. Pourtant la Clean Architecture et microservices me semblent parfaitement compatibles…

Bref, sur l’architecture de haut niveau Robert Martin est un peu dépassé.
En annexe, l’auteur nous livre un morceau d’autobiographie. C’est un peu hors sujet, mais j’ai trouvé cet ajout passionnant. D’abord parce que c’est très bien écrit et ensuite parce que c’est tout simplement un morceau d’histoire. Il se raccorde mal au reste du livre mais peu importe. De toute évidence Robert Martin voulait nous livrer ce témoignage.

La réelle substance de ce livre est assez mince, mais le volume ne l’est pas ce qui est une double déception. J’y ai trouvé beaucoup de redites avec ses écrits précédents et un manque de consistance récurrent dans le propos qui ne l’est pas. Certes le tout se lit rapidement grâce à un style fluide et captivant. Mais la matière n’est pas au rendez-vous.

Clean Architecture, par Robert C. Martin

Référence complète : Clean Architecture – Robert C. Martin – Prentice Hall 2018 – ISBN: 978 0 13 449416 6

Publicité

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.