Déjà, comme cela a déjà été dit, l'échelle de l'expérience n'est pas significative.
- Un code source de 4500 lignes n'est clairement pas suffisant pour juger d'un refactoring.
- Deux groupe de 10 étudiants chacun venant d'un pays qui n'est pas renommé pour son industrie IT.
De plus, au niveau de la méthodologie, l'étude a sélectionné 10 des techniques de refactoring de Martin Fowler qui datent des années 2000 (c'est-à-dire l'âge d'or de l'intégrisme POO).
Et c'est surtout là que le bât blesse à mon avis.
Certaines des 10 techniques considérées sont manifestement critiquables du point de vue des métriques analysées notamment le couplage.
R1- Introduce Local Extension
R2- Duplicate Observed Data
R3- Replace Type Code with Subclasses
R4- Replace Type Code with State/Strategy
R5- Replace Conditional with Polymorphism
R6- Introduce Null Object
R7- Extract Subclass
R8- Extract Interface
R9- Form Template Method
R10- Push Down Method
R1, R3, R5 et R7 sont des techniques qui augmentent de fait le couplage.
Par exemple, R1 préconise de créer des sous-classes clientes pour étendre le comportement de classes serveurs. Cela peut être le cas lorsqu'on utilise un framework externe. Or la tendance actuelle montre qu'il est souvent préférable de limiter l'héritage et de plutôt privilégier la composition pour justement éviter le couplage parent serveur / enfant client causé par l'héritage.
R3 et R7 sont du même acabit. Quant à R5, en plus d'introduire des classes, de l'héritage et donc du couplage là où on pourrait s'en passer, l'emploi immodéré du polymorphisme (R5) peut conduire à du code incompréhensible.
C'est donc une étude qui a selon moi une bonne décennie de retard.
Partager