  | Il est certain que ce livre est une référence sur la pratique du remaniement (Refactoring): L'étude est exhaustive, les patterns de refactoring sont très clairs, les exemples aussi, en java. Au-delà d'un catalogue de pattern et des cas de refactoring, Martin Fowler nous donne une position de compromis entre une conception amont et une conception emergente: la conception réaliste en amont, pouvant être remaniée pendant le développement.
Mais bon, ce livre est aussi passionnant qu'un livre de cuisine: lire un pattern me fait saliver les papilles synaptiques autant qu'une bonne recette, mais lire tout le livre est un peu rébarbatif...
Pendant la lecture, je me suis fait la réflexion que le remaniement est finalement très analytique: on recherche les invariants (duplication de code par exemple "Once and Only once") d'un système puis on suit la méthodologie pour remanier le code. D'ailleurs, une partie de ces patterns est implémentée dans nos IDE.
Qu'est-ce qui fait qu'une pratique analytique (et répandue hors de la communauté agile) devient une pratique agile? Et d'abord qu'est-ce qu'une pratique agile (je n'ai pas trouvé de définition, donc je me lance)? "Une pratique agile applique concrêtement des principes spécifiques au métier (le développement logiciel pour XP) en regard des valeurs de l'agilité" (j'ai bon?)
A ce titre le refactoring répond aux critères puisqu'il applique les principes d'amélioration (improvement), des petits pas (baby steps), des similitudes (self-similarity), de qualité...
Cette pratique est facilitée par une démarche XP grâce à la pratique des tests d'abord (test-first programming) et permet la conception incrémentale (incrementale design). De même, le remaniement est indispensable au TDD pour garder son code de tests utilisable. Et enfin, toujours dans un contexte XP, ce qui rend cette pratique extreme est que le remaniement doit être permanent.
On peut lire sur le site de vanderburg une analyse de dépendances des pratiques XP.
Donc cette pratique, bien que plutôt analytique, prend une dimension agile si on la considère d'un point de vue systémique (c'est à dire dans sa dynamique avec d'autres pratiques) dans un contexte XP. |
Aucun commentaire:
Enregistrer un commentaire