Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Réusinage de code — Wikipédia
Réusinage de code — Wikipédia 👆 Click Here! Read More..
Un article de Wikipédia, l'encyclopédie libre.
(Redirigé depuis Refactoring)
Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.
Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.

Cet article ne cite pas suffisamment ses sources (juin 2019).

Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites web de qualité traitant du thème abordé ici, merci de compléter l'article en donnant les références utiles à sa vérifiabilité et en les liant à la section « Notes et références ».

En pratique : Quelles sources sont attendues ? Comment ajouter mes sources ?

Le réusinage de code est l'opération consistant à retravailler le code source d'un programme informatique – sans toutefois y ajouter des fonctionnalités ni en corriger les erreurs – de façon à en améliorer la lisibilité et, par voie de conséquence, la maintenance, ou à le rendre plus générique (afin par exemple de faciliter le passage de simple à multiple précision) ; on parle aussi de « remaniement ». Cette technique utilise quelques méthodes propres à l'optimisation de code, avec des objectifs différents.

Le terme réusinage est originaire du Québec. L'équivalent en anglais est code refactoring, parfois rendu par refactorisation[1].

Cette activité est identifiée dans différentes méthodes de développement logiciel, et en particulier, extreme programming[2].

Justification

[modifier | modifier le code]

Au cours de la vie d'un logiciel, on lui ajoute souvent des fonctions, et en tout cas on corrige ses erreurs (bugs ou bogues). Ces modifications successives, n'améliorant pas en général la lisibilité du logiciel, ne facilitent pas, de ce fait, sa maintenance ultérieure.

Le code source d'un programme a tout intérêt à rester, malgré ses modifications, le plus clair possible.

Les techniques de programmation agile, où évolution et mise à disposition se font en quasi-continu, rendent cette exigence encore plus fondamentale.

Pour toujours conserver un code aussi simple que possible, on :

  • s'assure que toute l'information nécessaire est disponible ;
  • supprime toute information redondante ou duplication de code ;
  • simplifie, lorsque c'est possible, l'algorithmique des méthodes ;
  • limite la complexité de chaque classe ;
  • limite le nombre de classes.

Niveaux de réusinage

[modifier | modifier le code]

Durant une même session de réusinage, on considèrera ces différents niveaux :

Modification de la présentation

[modifier | modifier le code]

Ce niveau améliore la présentation du code source sans modifier le code exécuté : les commentaires (suppression de commentaires superflus, l'ajout de commentaires sur des sections complexes…) et la mise en page (indentation du code rendue homogène, passages à la ligne…). Des logiciels comme Eclipse ou même l'historique cb (C beautifier) de Linux peuvent faciliter cette opération cosmétique, voire la prendre en charge. Eclipse en propose même plusieurs variantes.

Modification de l'algorithmique

[modifier | modifier le code]

Ce type de modification vise à conserver des méthodes aussi simples que possible, par exemple en scindant une méthode ou un algorithme en plusieurs parties ou en confiant à un objet annexe une partie du traitement.

Ce type de modification introduisant fréquemment des bogues, il s'accompagne nécessairement d'une batterie de tests unitaires exécutée après chaque modification proposée pour s'assurer d'une non-régression.

Relocalisation de procédures

[modifier | modifier le code]

Consiste à déplacer une procédure soit dans une autre procédure, soit dans le corps principal de la classe. Peut également induire un déplacement de procédure dans une classe-mère (pull-up), ou dans une classe-fille (push-down).

Refonte de la conception

[modifier | modifier le code]

Cette modification plus radicale remanie la hiérarchie des classes composant l'application. La progressivité et les tests de non-régression sont plus que jamais indispensables. Utiliser un explorateur de classes facilite le processus.

Activités de réusinage

[modifier | modifier le code]

Suppression du code mort[3]

[modifier | modifier le code]

Le code mort est le code dont on constate qu'il ne sert à rien faute d'être appelé par une autre partie du programme. Sans doute utile dans une étape antérieure du développement ou du débogage, il n'a plus de raison d'être, rend la lecture du code source plus complexe et déconcentre les responsables de la maintenance.

Pour détecter le code mort, on peut utiliser les techniques suivantes :

  • recherche statique par l'outil grep sur le code source pour vérifier si une méthode est bien appelée quelque part ;
  • analyseur de références croisées (par exemple l'outil objxref livré avec le compilateur turbo C de Borland) ;
  • outil de mesure de couverture de code. Cette opération très pratique permet également de vérifier des portions de méthodes. Risque : du code peut être marqué à tort comme non couvert simplement parce que la suite de test n'est pas complète (or aucune ne peut être prouvée, l'être totalement, hormis dans des cas triviaux).

Autre forme de code mort : le code commenté (commented out). Il arrive souvent qu'à la suite de modifications, on laisse des pans entiers de l'ancien code pour pouvoir éventuellement revenir à la version antérieure facilement. Ce type de code devrait également être supprimé à la fin de la session de développement.

Dans tous les cas, il n'est jamais recommandé de conserver du code qui pourrait servir un jour[4]. Il est toujours préférable de le supprimer de la version de travail et d'utiliser un outil de gestion de versions pour archiver ce type de code.

Ajout d'assertions

[modifier | modifier le code]

Les assertions définissent un ensemble de règles à respecter par une application, dans le cadre de la programmation par contrat. Elles sont très intéressantes d'une part, car elles permettent de simplifier le débogage en détectant les erreurs au plus tôt, mais également parce qu'elles sont placées à l'intérieur du code qu'elles contrôlent et peuvent donc aider à la compréhension de l'état du système.

Factorisation du code

[modifier | modifier le code]
Article détaillé : Duplication de code.

Quand il y a du code dupliqué, ou encore, du code qui réalise la même fonction, dans différentes procédures ou différents objets, il est bon de le factoriser, de l'encapsuler, de ne laisser qu'un exemplaire de cette fonction, dans une librairie. En effet, il est plus facile pour la compréhension et la correction d'erreurs de codage de n'avoir qu'un source unique[5].

Renommage

[modifier | modifier le code]

Au fur et à mesure du développement d'un logiciel, le rôle des classes et des méthodes devient moins clair. Il est donc souvent utile de modifier les noms de classes ou de méthodes pour bien indiquer ce rôle[3].

Commentaires

[modifier | modifier le code]

Il n'existe pas de consensus sur la question des commentaires en documentation du logiciel. Il est cependant important de toujours synchroniser commentaire, code et documentation externe (voir les outils de génération de documentation logicielle).

Notes et références

[modifier | modifier le code]
  1. ↑ « réusinage », sur Office québécois de la langue française, dernière mise à jour : 2022 (consulté le 6 novembre 2023).
  2. ↑ Mathieu Bouchara, « EXtreme Programming : définition, principes et 12 pratiques » Accès libre, sur Le Consultant Digital, 26 avril 2023 (consulté le 21 août 2025)
  3. ↑ a et b « Le refactoring de code en programmation informatique », sur www.nexa.fr (consulté le 1er octobre 2025)
  4. ↑ Benoit Gantaume, « Identifier le code mort : Pourquoi et comment s'en débarrasser ? », sur Artisan Développeur, 23 octobre 2023 (consulté le 1er janvier 2025)
  5. ↑ « Refactoring : technique d’amélioration d’un code source », sur IONOS Digital Guide, 29 septembre 2020 (consulté le 1er octobre 2025)

Voir aussi

[modifier | modifier le code]

Bibliographie

[modifier | modifier le code]
  • Jean-Philippe Retaillé, Refactoring des applications Java/J2EE, Eyrolles, 2005, 390 p., (ISBN 2-212-11577-6)
  • Martin Fowler, Kent Beck, Refactoring: Improving the Design of Existing Code, Addison-Wesley Professional, 1999, 464 p., (ISBN 0-201-48567-2)
    • (en) refactoring.com référence les modèles pour la refactorisation tirés du livre, ainsi que de nouveaux modèles.
  • Joshua Kerievsky, Refactoring to Patterns, Addison-Wesley Professional, 2004, 400 p., (ISBN 0-321-21335-1)
v · m
Gestion de la qualité logicielle
Indicateurs de qualité (ISO/CEI 9126)
  • Capacité fonctionnelle (réponse aux exigences)
  • Fiabilité
  • Maintenabilité
  • Performance
  • Portabilité
  • Utilisabilité
Compréhension et contrôle du code source
  • Automatisation de test
  • Commentaires
  • Documentation
  • Inspection de produit
  • Programmation en binôme ou en groupe
  • Règles de codage
  • Revue de code
Tests
  • Acceptation
  • Intégration
  • Performance
  • Régression
  • Unitaire
  • Utilisateur
  • Validation
Métriques
  • Cohésion
  • Couplage
  • Couverture de code
  • Halstead
  • Indépendance fonctionnelle
  • Indice de maintenabilité
  • Ligne de code
  • Nombre cyclomatique
  • Point de fonction
Remaniements
  • Maintenance
  • Optimisation de code
  • Réusinage de code (Règle de trois)
Principes de programmation
  • Encapsulation
  • GRASP
  • KISS
  • Loi de Déméter
  • Masquage de l'information
  • Ne vous répétez pas (DRY)
  • Patron de conception
  • Séparation des préoccupations
  • YAGNI
SOLID
  • Responsabilité unique
  • Ouvert/fermé
  • Substitution de Liskov
  • Ségrégation des interfaces
  • Inversion des dépendances
Mauvaises pratiques
Antipatterns
  • Attente active
  • Grosse boule de boue
  • Programmation spaghetti (syndrome)
  • Réinventer la roue
Code smells
  • Duplication de code
  • God object
Voir aussi : Génie logiciel, Software craftsmanship, Dégradation logicielle
  • icône décorative Portail de l’informatique
  • icône décorative Portail de la programmation informatique
Ce document provient de « https://fr.teknopedia.teknokrat.ac.id/w/index.php?title=Réusinage_de_code&oldid=229416303 ».
Catégories :
  • Programmation informatique
  • Génie logiciel
  • Méthode agile
Catégories cachées :
  • Article manquant de références depuis juin 2019
  • Article manquant de références/Liste complète
  • Portail:Informatique/Articles liés
  • Portail:Technologies/Articles liés
  • Portail:Programmation informatique/Articles liés

  • indonesia
  • Polski
  • الرية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصر
  • Nederlands
  • 本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українска
  • Tiếng Việt
  • Winaray
  • 中文
  • Русски
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id