Utilisation/Réutilisation Paradoxe
Le paradoxe
Le paradoxe se résume en
Ce qui est facile à utiliser est difficile à réutiliser. Ce qui est facile à réutiliser est difficile à utiliser.
En essayant de rendre le code plus réutilisable (plus générique, plus abstrait, plus personnalisable), nous le rendons plus difficile à utiliser. En effet ce module/bibliothèque devra être adapté pour notre contexte et pour chaque contexte individuellement. D’autre part, lorsque nous rendons le code plus utilisable (plus adapté à un contexte spécifique), nous le rendons moins réutilisable.
Fine-grained/Lightweight module
Le fait de viser des modules Fine-grained/Lightweight permet d’avoir
- des modules facilement réutilisables
- une compréhension du système simplifié
Mais si nous sommes trop fin et trop léger
- nous obtenons une explosition du nombre de module et donc de dépendances inter-modules
- donc un énorme travail de configuration inter-module
- et plus nous avons de dépendances plus nos modules deviennent complexes et difficilement utilisables
- donc un changement dans un module peut impacter plusieurs autres modules
Maximiser la réutilisation complique l’utilisation
Coarse-grained/Heavyweight module
Le fait de viser des modules Coarse-grained/Heavyweight permet :
- de diminuer le nombre de dépendances inter-modules
- de maintenir le changement dans un seul module
- la configuration ne se fait que à un seul endroit
Mais en contre-partie
- nous diminuons la réutilisation de notre module
- il peut fournir plus que nécessaire au client
- et il devient plus compliqué à comprendre et l’impact d’un changement peut être difficile à analyser
Conclusion
La clé est de trouver le bon équilibre dans la tension utilisation/réutilisation.