• Aucun résultat trouvé

Extraction d'une méthode

Dans le document Developpez en Java avec Eclipse (Page 185-196)

Partie 2 : le développement en Java

8. Déboguer du code Java

9.1. Extraction d'une méthode

Cette fonction permet de transférer un morceau de code dans une méthode qui sera créée pour l'occasion.

Pour l'utiliser, il faut sélectionner le morceau de code.

Il faut sélectionner l'option « Extraire la méthode ... » du menu principal ou du menu contextuel « Propager les modifications ». Une boite de dialogue permet de saisir le nom de la méthode et de sélectionner le modificateur d'accès.

Un clic sur le bouton « OK » permet de mettre en oeuvre automatiquement les modifications.

Dans le cas ou le code sélectionné contient une ou plusieurs variables, la boîte de dialogue contient en plus la liste des variables détectées dans le code.

Il faut saisir le nom de la méthode, sélectionner son modificateur d'accès et éventuellement modifier les paramètres puis cliquer sur le bouton "OK".

La liste des variables détectées dans le code est affichée dans la liste des paramètres. Pour modifier le nom d'un des paramètres, il suffit de le sélectionner et de cliquer sur le bouton « Editer... ».

Le bouton « Aperçu » permet de voir et de valider les modifications qui seront apportées.

9.2. Intégrer

L'intégration permet de remplacer l'appel d'une méthode par le code contenu dans cette méthode.

Puis il faut utiliser l'option « Propager les modifications/Intégrer... » du menu principal ou contextuel.

En fonction du contexte d'appel, une boîte de dialogue permet de sélectionner la portée des modifications.

Si le code sélectionné ne correspond pas à une méthode, un message d'erreur est affiché.

9.3. Renommer

La fonction "Renommer" permet d'attribuer un nouveau nom à une entité présente dans l'espace de travail. La grand intérêt de réaliser une telle opération via cette fonctionnalité plutôt que de le faire à la "main" et qu'elle automatise la recherche et la mise à jour de toute les références à l'élement dans l'espace de travail.

Les exemples de cette section utilisent les deux classes suivantes :

Le renommage concerne l'entité sélectionnée dans la vue "Package" ou "Structure" ou sous le curseur dans l'éditeur de code Java.

Par exemple, pour renommer une méthode, il suffit de positioner le curseur sur le nom de la déclaration d'une méthode dans le code source et sélectionner l'option « Propager les modifications / Renommer » du menu contextuel.

Il suffit alors de saisir le nouveau nom. Eclipse permet de renommer la méthode dans sa classe de définition mais remplace aussi tous les appels de la méthode contenue dans l'espace de travail.

Pour renommer une classe, il y a deux possibilités : selectionner la classe dans la vue « Packages » ou positionner le curseur sur la définition du nom de la classe dans l'éditeur. Puis il faut utiliser l'option

« Renommer » du menu contextuel « Propager les modifications ».

Il est possible de préciser les types d'entités qui doivent être mise à jour.

A la validation, Eclipse effectue toutes les modifications nécessaires suite au renommage de la classe, notamment le remplacement à tous les endroits dans l'espace de travail ou la classe est utilisée.

Le principe est le même pour renommer un package.

Si Eclipse détecte des problèmes potenciels lors de l'analyse de la demande, il affiche dans une boite de dialogue la liste de ces problèmes et demande un confirmation avant de poursuivre les traitements.

Si la sélection ne correspond à aucun élément renommable, un message d'erreur est affiché.

Lors d'une opération de refactoring de renommage, l'assistant propose de mettre en oeuvre un délégué.

Exemple : Exemple :

package fr.jmdoudoux.test;

public class MaClasse1 extends MaSousClasseMere { public MaClasse1(int valeur) {

this.valeur = valeur;

}

public int additionner(int val) { return valeur+val;

} }

Sélectionnez une méthode et utiliser l'option « Restructurer / Renommer ... » du menu contextuel.

Saisissez le nouveau nom de la méthode et cochez la case « Conserver la méthode originale en tant que délégué de la méthode renommée ».

Par défaut la case à cocher « Marquer comme étant déprécié » est cochée.

Cliquez sur le bouton « OK »

Exemple :

package fr.jmdoudoux.test;

public class MaClasse1 extends MaSousClasseMere { public MaClasse1(int valeur) {

this.valeur = valeur;

} /**

* @deprecated Utilisez {@link#additionnerRenomme(int)} à la place */

public int additionner(int val) { return additionnerRenomme(val);

}

public int additionnerRenomme(int val) { return valeur+val;

} }

La nouvelle est renommée avec le nom fournie et l'ancienne méthode est définie avec l'attribut deprecated : elle appelle simplement la nouvelle méthode.

Cette fonctionnalité permet de garder une compatibilité ascendante.

Elle est mise en oeuvre dans plusieurs outils de refactoring tel que Renommer, Changer la signature de la méthode ou Introduire le paramètre.

Lors d'une opération de refactoring de type Renommer, il est possible de demander le renommage des entités dont le nom est similaire à l'entité renommée.

Exemple :

package fr.jmdoudoux.test ; public class Fenetre {

public Fenetre() {}

public Fenetre creerFenetre() {

Fenetre fenetre = new Fenetre();

return fenetre ; }

public void testerFenetre(Fenetre fenetre) { System.out.println(" Fenetre ="+ fenetre);

} }

Sélectionnez la classe et utilisez l'option « Restructurer / Renommer » du menu contextuel.

Saisissez le nouveau nom et cochez la case « Mettre à jour les méthode et les variables nommées

Cliquez sur le lien « Configurer ... » pour préciser les paramètres de recherche et de remplacement.

Sélectionnez l'option désirée et cliquez sur le bouton « OK ».

Voici le résultat avec l'option par défaut : Exemple :

package fr.jmdoudoux.test ; public class Window {

Voici le résultat avec l'option « Rechercher également les noms imbriqués » :

public void testerWindow (Window window) { System.out.println(" Fenetre ="+window);

} }

Lors du renommage d'un package, il est possible de demander le renommage des sous packages

Il suffit de cocher la case « Renommer les sous packages » pour que tous les sous packages soient automatiquement renommés lors de l'opération.

9.4. Déplacer

La fonction "Déplacer" permet de déplacer certains éléments précis notamment une classe dans l'espace de travail pour la déplacer dans un autre package. La grand intérêt de réaliser une telle opération via cette

En plus du déplacement de la classe, les clauses import correspondantes sont modifiées dans les classes qui utilisent la classe déplacée.

Si le code sélectionné dans l'éditeur de code Java ne correspond pas à une entité concernée par cet action, un message d'erreur est affiché.

Dans l'éditeur de code il faut sélectionner ou mettre le curseur sur un élément statique, avant d'utiliser la fonctionnalité.

Une boite de dialogue permet de sélectionner la classe dans laquelle la méthode va être transférée.

Le bouton "Parcourir" permet d'ouvrir une boîte de dialogue pour sélectionner la classe de destination.

Dans le document Developpez en Java avec Eclipse (Page 185-196)

Documents relatifs