Supponiamo di avere un metodo lungo come questo:
public void SomeLongMethod()
{
// Some task #1
...
// Some task #2
...
}
Questo metodo non ha parti ripetitive che dovrebbero essere spostate su un metodo separato o su una funzione locale.
Ci sono molte persone (incluso me) che pensano che i metodi lunghi siano odori di codice.
Inoltre non mi piace l'idea di usare #region
(s) qui e c'è una risposta molto popolare che spiega perché questo è male .
Ma se separio questo codice in metodi
public void SomeLongMethod()
{
Task1();
Task2();
}
private void Task1()
{
// Some task #1
...
}
private void Task2()
{
// Some task #1
...
}
Vedo i seguenti problemi:
-
Ambito di definizione della classe di inquinamento con definizioni utilizzate internamente da un singolo metodo e che significa che dovrei documentare da qualche parte che
Task1
eTask2
sono intese solo per interni diSomeLongMethod
(o ogni persona che legge il mio codice dovrà inferire questa idea). -
Compilazione automatica IDE di polling (ad es. Intellisense) di metodi che verrebbero utilizzati una sola volta all'interno del singolo metodo
SomeLongMethod
.
Quindi, se separio questo codice metodo in funzioni locali
public void SomeLongMethod()
{
Task1();
Task2();
void Task1()
{
// Some task #1
...
}
void Task2()
{
// Some task #1
...
}
}
quindi questo non ha gli svantaggi dei metodi separati ma questo non ha un aspetto migliore (almeno per me) rispetto al metodo originale.
Quale versione di SomeLongMethod
è più gestibile e leggibile per te e perché?