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 in un metodo separato o in 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 utilizzare #region
qui il / i e c'è una risposta molto popolare che spiega perché questo è negativo .
Ma se separo 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 inquinante con definizioni utilizzate internamente da un singolo metodo e che significa che dovrei documentarlo da qualche parte
Task1
e cheTask2
sono destinate solo agli interni diSomeLongMethod
(o ogni persona che legge il mio codice dovrà dedurre questa idea).Completamento automatico IDE inquinante (ad esempio Intellisense) di metodi che verrebbero utilizzati solo una volta all'interno del singolo
SomeLongMethod
metodo.
Quindi, se separo questo codice di 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 di metodi separati ma questo non sembra migliore (almeno per me) rispetto al metodo originale.
Quale versione di SomeLongMethod
è più gestibile e leggibile per te e perché?