Le manifeste de la refactorisation

Par : Nicolas Roberge
Publié le : 2010-12-10

Tha house is falling... a casa tá caíndo...
crédit Tony Protto

Le « refactoring », la refactorisation ou le réusinage (selon l’OQLF) est une tâche faite par des programmeurs dans un logiciel existant. C’est parfois fait à la fin d’un projet pour l’optimiser ou le standardiser ou c’est aussi fait lors que le logiciel doit être évolué. Voici une description provenant de Wikipédia :

La refactorisation (anglicisme venant de refactoring) est une opération de maintenance du code informatique. Elle consiste à retravailler le code source non pas pour ajouter une fonctionnalité supplémentaire au logiciel mais pour améliorer sa lisibilité, simplifier sa maintenance, ou changer sa généricité (on parle aussi de remaniement). Une traduction plus appropriée serait réusinage. C’est donc une technique qui s’approche de l’optimisation du code, même si les objectifs sont radicalement différents.

La refactorisation est essentielle si on veut assurer l’évolution d’un système informatique au fil des ans. C’est pour cette raison que Lasse Koskela et Bas Vodde ont créé un manifeste en ligne auquel vous pouvez ajouter votre nom si vous l’appuyez. Merci à Amélie Turgeon de me l’avoir fait découvert.

  1. Make your products live longer!
    Refactoring means taking the opportunity to keep your product alive. Don’t ditch it, stitch it! Don’t end it, mend it! Refactoring is not a needless cost. It is anti-needless complexity that prevents change.
  2. Design should be simple so that it is easy to refactor.
    Product designers: Make your products easy to change. Write clean, understandable code. Consumers: Buy products that are continuously refactored, or else find out why the developers didn’t do that. Be critical and inquisitive.
  3. Refactoring is not rewriting.
    Rewriting is throwing away the broken bit. This is NOT the kind of refactoring that we’re talking about.
  4. What doesn’t kill it makes it stronger.
    Every time we refactor code, we add to its potential, its history, its soul and its inherent beauty.
  5. Refactoring is a creative challenge.
    Refactoring is good for the imagination. Using new techniques, tools and materials ushers in possibility rather than dead ends.
  6. Refactoring survives fashion.
    Refactoring is not about styling or trends. There are no due-dates on continuously refactored code.
  7. To refactor is to discover.
    As you refactor objects, you’ll learn amazing things about how they actually work. Or don’t work.
  8. Refactor – even in bad times!
    If you think this manifesto is not relevant during recession, forget it. This isn’t about effort, it’s about mentality.
  9. Refactoring is about independence.
    Don’t be a slave to legacy code – be its master. If it’s broken, refactor it and make it better. And if you’re a master, empower others.
  10. You can refactor anything, even total crap.
    But we’d recommend avoiding total crap. Refactoring stops code from becoming crap.

Je crois beaucoup à l’évolution de systèmes. Il ne faut pas abandonner rapidement nos investissements informatiques. Il y a toujours façon de moderniser progressivement notre solution et la rendre actuelle et performance. Il suffit d’y croire et y investir le temps et l’argent chaque année. Les refontes sont toujours très coûteuses et imprévisibles.

Un logiciel est comme une maison. Si on l’entretient constamment, elle restera belle toujours et augmentera en valeur. Si on n’y touche pas pendant des années, elle deviendra éventuellement complètement désuète et vous serez obligé de la démolir et reconstruire. On voit rarement ça dans l’immobilier, alors cessons de le faire en informatique.