Supposons que j'ai une longue méthode comme celle-ci:
public void SomeLongMethod()
{
// Some task #1
...
// Some task #2
...
}
Cette méthode n'a pas de parties répétitives qui doivent être déplacées vers une méthode distincte ou une fonction locale.
Il y a beaucoup de gens (dont moi) qui pensent que les méthodes longues sont des odeurs de code. De plus, je n'aime pas l'idée d'utiliser #region
(s) ici et il y a une réponse très populaire expliquant pourquoi c'est mauvais .
Mais si je sépare ce code en méthodes
public void SomeLongMethod()
{
Task1();
Task2();
}
private void Task1()
{
// Some task #1
...
}
private void Task2()
{
// Some task #1
...
}
Je vois les problèmes suivants:
Portée de la définition de classe polluante avec des définitions qui sont utilisées en interne par une seule méthode et qui signifient que je devrais documenter quelque part cela
Task1
et neTask2
sont destinées qu'aux internes deSomeLongMethod
(ou toute personne qui lit mon code devra inférer cette idée).Saisie automatique IDE polluante (par exemple Intellisense) de méthodes qui ne seraient utilisées qu'une seule fois à l'intérieur de la
SomeLongMethod
méthode unique .
Donc, si je sépare ce code de méthode en fonctions locales
public void SomeLongMethod()
{
Task1();
Task2();
void Task1()
{
// Some task #1
...
}
void Task2()
{
// Some task #1
...
}
}
alors cela n'a pas les inconvénients des méthodes distinctes mais cela ne semble pas mieux (au moins pour moi) que la méthode d'origine.
Quelle version de SomeLongMethod
est plus facile à gérer et à lire pour vous et pourquoi?