Supongamos que tengo un método largo como este:
public void SomeLongMethod()
{
// Some task #1
...
// Some task #2
...
}
Este método no tiene partes repetitivas que se deben mover a un método separado o función local.
Hay muchas personas (incluido yo) que piensan que los métodos largos son olores de código. Además, no me gusta la idea de usar #regionaquí y hay una respuesta muy popular que explica por qué esto es malo .
Pero si separo este código en métodos
public void SomeLongMethod()
{
Task1();
Task2();
}
private void Task1()
{
// Some task #1
...
}
private void Task2()
{
// Some task #1
...
}
Veo los siguientes problemas:
Contaminar el alcance de la definición de clase con definiciones que se usan internamente por un solo método y que significa que debo documentar en algún lugar
Task1y queTask2están destinadas solo a elementos internos deSomeLongMethod(o cada persona que lea mi código tendrá que inferir esta idea).Contaminación IDE autocompletar (por ejemplo, Intellisense) de métodos que se utilizarían solo una vez dentro del
SomeLongMethodmétodo único .
Entonces, si separo este código de método en funciones locales
public void SomeLongMethod()
{
Task1();
Task2();
void Task1()
{
// Some task #1
...
}
void Task2()
{
// Some task #1
...
}
}
entonces esto no tiene los inconvenientes de los métodos separados, pero esto no se ve mejor (al menos para mí) que el método original.
¿Qué versión de SomeLongMethodes más fácil de mantener y legible para usted y por qué?