TUTORIEL JAVA 
Le refactoring sous Eclipse
Présentation des principales fonctions d'Eclipse rattachées à la modification automatique du code Java. (08/12/2005)

Un bon EDI prend en charge le plus grand nombre de tâches laborieuses normalement gérées par le développeur - et en la matière, Eclipse excelle. L'une des grandes fonctionnalités de cet EDI Open-Source est sa maîtrise des modifications apportée au code : par le biais de quelques assistants très simples, le développeur peut déplacer, renommer ou plus généralement modifier une partie du code source, et laisser l'EDI faire en sorte que le reste du code soit mis à jour pour prendre en compte ces modifications.

Cela s'appelle le refactoring, un aspect très important de la programmation Objet, où le changement de nom d'une méthode peut se répercuter très loin dans les classes descendantes. C'est, par extension, un élément-clef de l'eXtreme Programming, où par définition le programme peut et doit être constamment remanié pour améliorer sa structure sans modifier son comportement. L'automatisme est donc de mise.

Les nombreuses fonctions de refactoring sont accessibles de deux manières différentes : soit depuis le menu Refactor du menu principal, soit depuis celui du même nom, accessible via le menu contextuel (clic droit sur la zone de code à modifier). À noter que cette seconde possibilité est tout aussi contextuelle que le menu qu'elle accompagne : les fonctions qu'elle propose dépendent du code sélectionné. Selon la complexité de la modification à appliquer, la fonction affichera soit une simple boîte de dialogue, soit un assistant complet.

Pour l'heure, il existe une vingtaine de fonctions de refactoring. Celles-ci peuvent appliquer des modifications soit sur le type de la classe ou de l'interface, soit réorganiser le code lui-même. La modification s'applique à tous les fichiers qui font référence à la zone sélectionnée, sauf si les préfèrences de l'utilisateur disent le contraire. Pour chaque dialogue ou assistant, l'utilisateur dispose d'un bouton Preview lui permettant de vérifier que rien ne lui échappe (cf. nos captures d'écrans...).

Voici les principales fonctions de refactoring proposées par Eclipse 3.1.

Extract Method...
Crée une nouvelle méthode encapsulant les éléments sélectionnés, et remplace toutes les références à ces éléments (même ailleurs dans le code), par un appel vers cette méthode. Considérée comme l'un des piliers du refactoring, cette fonction permet de rapidement nettoyer une méthode trop longue en la découpant en éléments singuliers.

Rename...
Renomme l'élément sélectionné.

Move...

Déplace l'élément sélectionné, par exemple enlever la classe du paquetage actuel, et la place dans un autre paquetage (voire un nouveau, spécialement créé via le bouton Create a Java Package).

Change Method Signature...
Modifie la signature de la méthode en cours, c'est-à-dire ses droits d'accès (public / private / protected / default). Peuvent également être modifiés par cet assistant : le type du résultat, l'ordre, le nom et le type des paramètres et les déclarations d'exceptions.

Extract Local Variable...
De la même manière que Extract Method, cette fonction crée une nouvelle variable assignée à l'expression sélectionnée.

Convert Local Variable to Field...
Transforme une variable locale, définie dans une méthode, en champ de classe.

Inline...
C'est la fonction inverse de Extract Local Variable : elle rétablit l'expression assignée à la variable, en lieu et place de la variable, qui disparaît. Particulièrement utile si l'on se rend compte qu'une variable locale n'est utilisée qu'une fois, et que le programme n'est jamais assez optimisé.

Push Down...
Pull Up...

Ces deux fonctions marchent dans le même sens, mais avec des directions différentes : elles déplacent la sélection respectivement vers la sous-classe ou la superclasse actuelle.

  Forum

Réagissez dans les forums de JDN Développeurs

Introduce Parameter...
Remplace une expression par une référence à un nouveau paramètre, et met à jour toutes les expressions faisant appel à cette méthode.

Extract Constant...
Crée un champ de classe avec attributs static et final à partir des expressions sélectionnées, et remplace ces dernières par une référence à la constante. Accessoirement, l'assistant peut remplacer toutes les occurrences de l'expression par la constante.

Use Supertype Where Possible...
Remplace les occurrences d'un type par l'un de ses supertypes, non sans avoir identifié auparavant tous les emplacements où ce remplacement est possible.

Generalize Type...
Présente à l'utilisateur une fenêtre dans laquelle il pourra choisir l'un des supertypes de la référence sélectionnée, celles permettant un changement sans risque de type étant colorées.

Extract Interface...
À l'instar des précédentes fonctions de types Extract, celle-ci se charge de prendre les éléments sélectionnes et d'en tirer une classe disposant des méthodes de la classe en cours, et implémente cette interface sur la classe.

Encapsulate Field...
Remplace toutes les références à un champ de classe, par des méthodes get et set pour ce champ.

Introduce Factory...
Crée une nouvelle méthode de type Factory, en générant pour un constructeur donné la méthode statique appropriée.

 
Xavier Borderie, JDN Développeurs
 
Accueil | Haut de page
 
 





Quand achetez-vous le plus en ligne ?
Du lundi au vendredi
Le samedi
Le dimanche

Tous les sondages