Building Maintainable Software

Publié le 12/09/2016

En profitant d'une petite promo de -50% chez O'Reilly, je me suis offert l'ebook Building Maintainable Software, édition C-Tartine. Le livre propose de suivre une série de préceptes permettant d'améliorer la qualité du code produit. Bien que le contenu ressemble parfois plus à une grosse page marketing pour le Software Improvment Group, il reste intéressant et vaut le coup d'être lu. Deux petits problèmes par contre:

  1. On part parfois d'un cas concret (qui ressemble parfois à ce que j'ai pu commettre de code foireux), en prenant une méthode dans laquelle on trouve plusieurs concepts différents (appel à la db, cast vers une classe type DTO, validation d'input). Juste après, on passe directement sur un autre exemple, beaucoup plus simple à résoudre.
  2. J'ai l'impression que cela parle plus de théorie, sans proposer de solution automatique, ce qui rejoint un peu ce que je disais au niveau marketing: "si vous voulez vous améliorer, signez chez nous!".

Les principaux conseils sont les suivants (pour les d√©tails, il vous faudra acheter le bouquin ūüėõ):

Au niveau des méthodes

Au niveau des classes

Au niveau des composants

Et de manière plus générale

Ceci est sans doute un des points les plus ennuyants de ce livre: il n'y a finalement que très peu d'exemples concrets, notamment pour la mise en place d'un tel environnement. Ok, ça parle de Jenkins du début à la fin, mais plus comme un exemple à suivre (ou parfois à ne pas suivre) que comme un outil à utiliser. De manière plus générale, j'ai l'impression que le code .Net reste extrêmement fermé à des outils open source permettant d'augmenter la qualité du code. Il existe des linters pratiquement pour tous les langages, mais si vous voulez quelque chose de fonctionnel pour C#, il va falloir passer par la caisse. Une stratégie MS classique en sommme: "on vous offre les outils pour pas grand chose, et pour aller plus loin, vous douillez".

Pour aller plus loin

En regardant un peu à droite-à gauche, pour du code .Net, les outils suivants ont l'air sympa, comme: