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 #region
aquí 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
Task1
y queTask2
está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
SomeLongMethod
mé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 SomeLongMethod
es más fácil de mantener y legible para usted y por qué?