mercredi 14 décembre 2011

KISOD

Vous connaissez tous le Keep It Stupid Simple, qui est l'arlésienne du développement informatique (!). Je propose d'aller plus loin avec le Keep It Simple Or Die.

Petite anecdote de ma vie professionnelle cette semaine. Un collègue prépare une livraison pour un script shell devant installer un correctif. Le correctif est composé d'un fichier sql. Le use-case n'est pas compliqué :

  1. Créer un répertoire de backup dans le répertoire de travail du script

  2. Sauvegarder le script actuellement déployé dans le répertoire

  3. Copier le nouveau script dans le répertoire applicatif



Je passe sur le script de désinstallation qui fait la même chose mais à l'envers. Bref.

Qu'est-ce que je trouve :

  • Le répertoire de sauvegarde est créé par un mkdir $(pwd)/backup. De quoi ??? mkdir backup, ça ne suffit pas ???

  • Pour copier le fichier existant vers le backup et le fichier à déployer, on passe par un for FILE in *.sql; do ... De quoi ??? on ne copie qu'un fichier ! Il y a des limites à la généralisation !

  • En fait, on ne fait pas des cp, on fait des mv. De quoi ??? et si je veux rejouer l'install, je redetare ???

  • Même combat sur la désinstallation, sauf qu'au milieu des boucles et autres mv, un bug s'est glissé, un .sql qui devenait un .ksh ou autre bizarrerie. Honnêtement, mon esprit a oublié.



Par jeu ou arrogance peut-être, je me suis dit que ce serait certainement une bonne idée de réécrire ces scripts... avec un mkdir et 2 cp...

Apparemment, le collègue a fait ça vite fait avant de partir en congés avec le post-it "plus qu'à tester et à envoyer". Je pense que c'est un code qu'il a récupéré d'ailleurs et qu'il a dû bricoler. Il y a des jours ou on se dit que le pair programming devrait être une rêgle de base.

Je suis sur un projet legacy. Il y a des trucs comme ça a tous les coins de fichier.

Comme dirait mon chef : "C'est pas possible les gars, vous ne savez pas faire simple ?". Pas mieux. KISOD.

Épilogue
La correction était dans un fichier sql. L'ancien bout de code était en commentaire malgré notre utilisation intensive de, oh mon dieu, subversion. C'est du sql pour Oracle 10g, avec le undo management en automatique. On y trouve un use rollback segment XXX bien obsolète... Je suis un peu fatigué là.



Le code mort de vaincra pas.