A philosophy of software design

J’ai connu ce livre en lisant l’article Top 5 Contemporary Software Engineering Books consacré aux nouveaux classiques dans le domaine du software engineering. Il tentait d’identifier parmi les publications récentes celles qui remplaceraient peut-être les Refactoring: Improving the Design of Existing Code et autres Design Patterns: Elements of Reusable Object-Oriented Software – le conditionnel est ici plus que jamais de rigueur. Je n’avais jamais entendu parler de ce livre ni de son auteur John Ousterhout professeur à Standford. Contrairement à ce que le titre pourrait laisser penser, il n’est pas question ici de design ou d’architecture, mais plutôt de codage. En ce sens il se rapproche de ses ancêtres Clean code et Code Complete comme le laissait entendre l’auteur de l’article.

Le grand ennemi de l’auteur est la complexité. Il l’a combat sur tous les fronts, de la conception d’un module à la gestion des exceptions en passant par une longue tirade sur les commentaires dans le code – les fameux, combien de discussions auront-ils animés. C’est surprenant car il va parfois à contre-courant en défendant, dans l’un des chapitres les plus intéressants du livre, les modules, les classes et les méthodes denses (deep) alors que la tendance est à la multiplication de petits bouts beaucoup plus réduits (shallow). Par opposition celui sur les commentaires n’apporte pas grand chose si ce n’est de dire qu’il ne faut pas commenter ce qui est déjà codé – ça s’appelle paraphraser – mais plutôt ce qui est implicite ou ce qui concerne les raisons qui ont poussé à faire ces choix.

Le livre en général est une lecture qui éclaire parfois, donne à penser un peu sans toutefois révolutionner le genre. Les débutants y trouveront des conseils pleins de bon sens, les plus expérimentés – c’est malheureusement mon cas – seront amenés à se poser des questions et parfois à revoir leur point de vue. L’avantage est qu’il est court (moins de 200 pages). Par contre, contrairement à d’autres ouvrages dans cette catégorie, il n’est pas particulièrement drôle. Ce n’est pas ce qu’on lui demande me direz-vous, mais quelques traits d’humour rendent la lecture plus digeste et contribuent même parfois à une meilleure compréhension. Ce livre ne détrônera certainement pas ses illustres prédécesseurs et ne restera certainement pas non plus dans les mémoires. Comme ce n’est pas – et de loin – le premier du genre, il est dommage que l’auteur n’ait pas pris le temps de rédiger une bibliographie. Par contre mention spéciale pour l’illustration de couverture, le plat de spaghettis ça marche à tous les coups.


John K Ousterhout, A philosophy of software design, Yaknyam Press, 2018, 190 p, Amazon.