La méthode d'extraction (un refactoring du livre de Fowler) fonctionne très bien si votre méthode n'attribue aucune valeur. S'il affecte une valeur, cela devient la valeur de retour de la méthode extraite. Que faire s'il affecte deux valeurs?Comment extraire une méthode qui affecte deux valeurs?
Certains code C# pour illustrer:
private void someBigFunction() {
doSomething();
doSomethingElse();
// start extraction here
string first = Database.Select(...);
// ...
// next is dependent on the value of "first"
int next = Database.Select(...);
// ...
// stop extraction here
doMoreUselessStuff();
}
Le code exact ou les valeurs ne sont pas importants ici. Le point est l'extraction de cette méthode. (Les deux valeurs sont liées, donc il est logique de les avoir dans la même méthode - et de ne pas faire deux méthodes.)
Les réponses possibles à cette question serait "return both in a array", "les retourner à la fois dans une structure de données de type paire, "ou" utiliser des paramètres (passer par référence) "- mais je cherche quelque chose de plus propre. (Le code réel est en Delphi, pas C#)
Je n'aime pas faire des classes sans méthodes, mais cela résout proprement le problème. Et il est probable que lorsque vous commencerez à regrouper des variables, les méthodes suivront. – ashes999