Refactoring (Restructuration de code )

Slides:



Advertisements
Présentations similaires
4 Avoir Les normes: –Communication 1.2 : Understanding the written and spoken language –Comparisons 4.1 : Understanding the language through making comparisons.
Advertisements

Les Adjectifs Irréguliers
Mardi 26 avril 2011 Today we are going to use pronouns that function as indirect pronouns. We are going to learn how to make the distinction between direct.
Détection et correction des défauts de conception
Les verbes “re” The time is “hear” to learn a new type of verb conjugation… verbs that end with “re”
Venir/revenir/devenir Venir is irregular! The root of the verb remains! We can add prefixes!
Les notes # Ir verb endings Je: -is Tu: -is Il/Elle: -it Nous: -issons Vous: -issez Ils/Elles: -issent.
Les contraintes dans un MCD - rappels sur les différents types de contraintes - contraintes interrelations.
UML EPITECH 2009 UML1 - Introduction UML – Définition – Historique – UML en entreprise – Couverture Concepts – Objet – Classe –
Présentation python : Épisode 4 ● Les objets : héritage ● Introduction à l'héritage ● Un exemple illustrant l'héritage ● Détails sur l'appel de méthode.
J.M. Vanel Modèles de conception (design patterns)
Les ORMs ● Faire coexister le monde relationnel et objet.
Subversion. 2 Subversion : Pour Quoi Faire ? Problèmes de la gestion du code dans un projet – La durée de vie du projet peut être longue : besoin de gérer.
1 Programmation Orientée Objet ● Qu'est-ce qu'un objet ● Collaboration des objets ● Les classes ● Relations entre les classes – “Utilise”, “Contient”,
1 Modèles de conception métier J.M. Vanel Architecture en couches – Présentation – Logique applicative – Modèle Métier – Accès aux données – Stockage.
1 Java Avancé Eclipse pour les null Rémi Forax
1 Créer un extension OpenOffice.org avec Eclipse Créer une extension OpenOffice.org avec Eclipse.
Présentation python : Épisode 4 ● Les objets : héritage ● Introduction à l'héritage ● Un exemple illustrant l'héritage ● Détails sur l'appel de méthode.
Test logiciel J.M. Vanel Sommaire Pourquoi tester? Catégories de tests Stratégies de test Pratique des test Caractéristiques des bons tests Gestions.
INSERT THE TITLE OF YOUR PRESENTATION HERE FREE PPT TEMPLATES ALLPPT.com _ Free PowerPoint Templates, Diagrams and Charts Your Text Here!
La technologie des mémoires
JAVA.
Session 1 6 mars 2017 Plateforme ICONICS Justine Guégan
Détection des erreurs.
Formation sur la publication des données de biodiversité dans le réseau GBIF et leur aptitude à être utilisées , édition 2011 Comment le DwC-A a changé.
Les fondamentaux de la Programmation Orientée Objet
PROJET JAVA Automatisation d’une rame de métro
Les Bases de données Définition Architecture d’un SGBD
[Insérez le nom du programme]
Processus de développement agile
Un Une des Indefinite Articles Un introduces masculine/singular nouns
Présentation python : Épisode 3
JAVA et POO : Notion d'héritage
Principes de programmation (suite)
Technologies de l’intelligence d’affaires Séance 14
More subjunctive….
Les interfaces en PHP.
Test Driven Development (TDD)
Bonnes pratiques Orienté Objet et Java
Programmation en C++ Classes
Résumé de la réunion PAF-CAF 12/04/2010
ALLPPT.com _ Free PowerPoint Templates, Diagrams and Charts INSERT THE TITLE OF YOUR PRESENTATION HERE FREE PPT TEMPLATES.
Chapter 12: Structures de données
Présentation python : Épisode 3
Programmation Orientée Objet
Short Presentation English class HACKERS. TYPE OF HACKERS 'Black Hat' Hackers : criminals and wrongdoers. 'White Hat' Hackers : ethical hackers who.
Développement d’applications interactives
Diagrammes UML 420-KE2-LG.
THE BEST OF THIS YEAR VOTED THE BEST OF THIS YEAR (élu meilleur de 2007)
Architectures Logicielles Java GLG203 GLG204
THE BEST OF THIS YEAR VOTED THE BEST OF THIS YEAR (élu meilleur de 2007)
© Robert Godin. Tous droits réservés.
Langages de programmation TP11
EPITECH 2009 UML EPITECH 2009
JDepend - Analyse de la qualité du code Java -
1-1 Introduction to ArcGIS Introductions Who are you? Any GIS background? What do you want to get out of the class?
THE BEST OF THE YEAR VOTED THE BEST OF THE YEAR (élu meilleur de l’année)
Task while waiting for everyone to finish writing the WALT and WILF
Le langage C# : Partie 1.
INTERFACE ET POLYMORPHISME
Chapitre 12 : Notion de fonction
Arbre binaire.
Variables et accès en Java
Retour sur les interfaces
Jérôme CUTRONA PHP objet Jérôme CUTRONA 08:30:34 Programmation Web
Design Patterns en programmation par objets
L’architecture romane et gothique
© Robert Godin. Tous droits réservés.
Transcription de la présentation:

Refactoring (Restructuration de code ) J.M. Vanel

Refactoring: Plan Les symptômes: les mauvaises odeurs Définition Exemples

Définition d'un Refactoring Changement à fonctionnalité égale Appuyé par des tests Par étapes successives Premature optimization is the root of all evil. Donald Knuth

What Motivates Us to Refactor? Make it easier to add new code. Improve the design of existing code. Gain a better understanding of code. Make coding less annoying.

Principes Beaucoup d'yeux Code lisible par l'homme Martin Fowler said it best: Any fool can write code that a computer can understand. Good programmers write code that humans can understand. Garder la propreté À petits pas La dette de mauvaise conception

Mauvaises odeurs: défauts majeurs méthodes et classes trop longues duplication de code Mauvais nommage arguments trop nombreux

Mauvaises odeurs: défauts locaux réutilisation de variables temporaires pour plusieurs usages différents Nombres en dur Commentaires !

Mauvaises odeurs: défauts OO pas d'encapsulation des champs Objets immuables Switch, codes de types Cast (transtypage), instanceof Trop de static

Mauvaises odeurs: défauts architecturaux comportement métier et couche infrastructure mélangés trop de dépendances croisées ou cycliques entre classes ou paquetages À détecter avec JDepend hiérarchies d'héritage parallèles

Mauvaises odeurs: autres défauts - 1 Nécessité de changements dans plusieurs classes (shotgun surgery) Changement divergent Envie pour les attributs d'une autre classe (feature envy) Données groupées (data clumps) Usage excessif des types simples (Primitive obsession) Généralité inutile (speculative generality)

Mauvaises odeurs: autres défauts - 2 Champs utilisés occasionnellement (temporary fields) Chaînes de messages L'intermédiaire qui fait surtout de la délégation (middle man) Trop d'intimité (inapropriate intimacy) Classes alternatives avec interfaces différentes Classes de données pures (Data Class)

Mauvaises odeurs: autres défauts - 3 Conventions de nommage implicites À remplacer par introspection Tout ce qui est détecté par les outils classiques ( PMD, Checkstyle, ...) Complexité cyclomatique

Exemples de Refactoring Extraire: Méthode, classe, variable Renommer Déplacer (Méthode, classe, variable) D'une classe à une autre quelconque Entre parent et descendant Changer arguments méthode ==> eclipse fait tout ça