Extraire une méthode.
Vous avez un fragment de code qui peut être regroupé.
Déplacez ce code dans une nouvelle méthode (ou fonction) distincte et remplacez l'ancien code par un appel à la méthode.
##Example
void printOwing() {
printBanner();
// Afficher les détails.
System.out.println("name: " + name);
System.out.println("amount: " + getOutstanding());
}void printOwing() {
printBanner();
printDetails(getOutstanding());
}
void printDetails(double outstanding) {
System.out.println("name: " + name);
System.out.println("amount: " + outstanding);
}##Why Refactor
Plus une méthode comporte de lignes, plus il est difficile de comprendre ce qu'elle fait. C'est la principale raison d'être de ce refactoring.
Outre l'élimination des aspérités de votre code, l'extraction de méthodes est aussi une étape de bien d'autres approches de refactoring.
##Benefits
-
Un code plus lisible ! Veillez à donner à la nouvelle méthode un nom qui décrit son objectif :
createOrder(),renderCustomerInfo(), etc. -
Moins de duplication de code. Souvent, le code contenu dans une méthode peut être réutilisé ailleurs dans votre programme. Vous pouvez donc remplacer les doublons par des appels à votre nouvelle méthode.
-
Isole des parties indépendantes du code, ce qui rend les erreurs moins probables (par exemple si la mauvaise variable est modifiée).
##How to Refactor
-
Créez une nouvelle méthode et nommez-la de façon à rendre son objectif évident.
-
Copiez le fragment de code concerné dans votre nouvelle méthode. Supprimez le fragment de son ancien emplacement et placez-y à la place un appel à la nouvelle méthode.
Repérez toutes les variables utilisées dans ce fragment de code. Si elles sont déclarées à l'intérieur du fragment et ne sont pas utilisées en dehors, laissez-les simplement telles quelles — elles deviendront des variables locales de la nouvelle méthode.
-
Si les variables sont déclarées avant le code que vous extrayez, vous devrez passer ces variables aux paramètres de votre nouvelle méthode afin d'utiliser les valeurs qu'elles contenaient auparavant. Il est parfois plus simple de se débarrasser de ces variables en recourant à Remplacer une variable temporaire par une requête.
-
Si vous constatez qu'une variable locale change d'une manière ou d'une autre dans le code extrait, cela peut signifier que cette valeur modifiée sera nécessaire plus tard dans votre méthode principale. Vérifiez-le ! Et si c'est bien le cas, renvoyez la valeur de cette variable à la méthode principale pour que tout continue de fonctionner.