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.
|