ScholarGate
Assistant

Qualité du code et refactorisation

La qualité du code et la refactorisation se rapportent à l'écriture de code source lisible, maintenable et bien structuré, ainsi qu'à des techniques disciplinées visant à améliorer la structure interne du code existant sans en modifier le comportement externe.

Trouver un sujet avec PaperMindBientôtFind papers & topics
Tools & resources
Télécharger les diapositives
Learn & explore
VidéoBientôt

Definition

La refactorisation est le processus de modification d'un système logiciel de manière à ne pas altérer son comportement observable tout en améliorant sa structure interne, et la qualité du code est le degré auquel le code source présente de la lisibilité, de la maintenabilité et une conception interne saine.

Scope

Ce sujet aborde la lisibilité et la dénomination du code, la cohésion et le couplage au niveau du code, les 'code smells' qui signalent des problèmes de conception, le catalogue des refactorisations préservant le comportement, le rôle des tests automatisés dans la refactorisation sécurisée, ainsi que les métriques de qualité du code et les outils d'analyse statique utilisés pour évaluer et faire respecter les standards.

Core questions

  • Quelles caractéristiques rendent le code source lisible et maintenable ?
  • Comment les 'code smells' signalent-ils les endroits où une refactorisation est nécessaire ?
  • Comment la structure peut-elle être améliorée sans modifier le comportement ni introduire de défauts ?
  • Comment la qualité du code et sa dégradation sont-elles mesurées au fil du temps ?

Key theories

Refactorisation préservant le comportement
La refactorisation applique de petites transformations préservant le comportement en séquence, chacune vérifiée par des tests, pour améliorer la structure de manière incrémentale et sécurisée plutôt que par de grandes réécritures risquées.
Les 'code smells' comme heuristiques de conception
Des symptômes de surface récurrents — méthodes longues, code dupliqué, classes volumineuses, 'feature envy' — servent d'heuristiques indiquant des problèmes de conception plus profonds et suggèrent des refactorisations spécifiques pour y remédier.

Clinical relevance

Une qualité de code élevée réduit le coût de compréhension et de modification des logiciels, qui domine leur coût total ; une refactorisation continue maintient une base de code adaptable et est essentielle pour soutenir le développement agile et contrôler la dette technique.

Evidence & guidelines

La norme ISO/IEC 25010 encadre la maintenabilité et d'autres attributs de qualité, et les outils d'analyse statique appliquent les standards de codage et détectent les 'code smells' par rapport aux règles du projet.

History

Les pratiques de refactorisation ont été systématisées par Fowler en 1999 et se sont développées parallèlement au développement piloté par les tests et aux méthodes agiles, qui dépendent d'une restructuration continue et protégée par des tests ; l'artisanat du 'clean code' et l'analyse statique automatisée ont par la suite renforcé la discipline de la qualité du code.

Debates

Quelle quantité de refactorisation est justifiée
Les équipes débattent de l'agressivité avec laquelle refactoriser : des améliorations continues et modestes maintiennent le code sain mais consomment des efforts, tandis que le report de la restructuration accumule de la dette technique ; l'équilibre dépend de la longévité du code et de son taux de changement.

Key figures

  • Martin Fowler
  • Kent Beck
  • Robert C. Martin
  • Steve McConnell

Related topics

Seminal works

  • fowler2018
  • mcconnell2004
  • martin2008

Frequently asked questions

La refactorisation modifie-t-elle ce qu'un programme fait ?
Non. Par définition, la refactorisation préserve le comportement observable ; elle restructure les éléments internes pour améliorer la lisibilité et la conception. Des tests automatisés sont utilisés pour confirmer que le comportement reste inchangé après chaque transformation.
Pourquoi investir dans la qualité du code si le logiciel fonctionne déjà ?
La majeure partie du coût d'un système provient de sa compréhension et de sa modification ultérieures ; un code de mauvaise qualité ralentit chaque modification future et augmente le risque de défauts, de sorte qu'investir dans la qualité est rentable sur la durée de vie maintenue du logiciel.

Methods for this concept

Related concepts