Angenommen, ich habe eine lange Methode wie diese:
public void SomeLongMethod()
{
// Some task #1
...
// Some task #2
...
}
Diese Methode enthält keine sich wiederholenden Teile, die in eine separate Methode oder lokale Funktion verschoben werden sollten.
Es gibt viele Leute (einschließlich mir), die denken, dass lange Methoden Code-Gerüche sind. Ich mag auch keine Idee, hier #region
(s) zu verwenden, und es gibt eine sehr beliebte Antwort, die erklärt, warum dies schlecht ist .
Aber wenn ich diesen Code in Methoden aufteile
public void SomeLongMethod()
{
Task1();
Task2();
}
private void Task1()
{
// Some task #1
...
}
private void Task2()
{
// Some task #1
...
}
Ich sehe die folgenden Probleme:
Verschmutzenden Klassendefinition Umfang mit Definitionen , die intern von einem einzigen Verfahren verwendet werden und was bedeuten soll ich irgendwo dokumentieren , dass
Task1
undTask2
sind nur für den Interna von gedachtSomeLongMethod
(oder jede Person , die mein Code liest muss diese Idee ableiten).Verschmutzende IDE-Autovervollständigung (z. B. Intellisense) von Methoden, die innerhalb der einzelnen
SomeLongMethod
Methode nur einmal verwendet werden.
Wenn ich diesen Methodencode in lokale Funktionen aufteile
public void SomeLongMethod()
{
Task1();
Task2();
void Task1()
{
// Some task #1
...
}
void Task2()
{
// Some task #1
...
}
}
dann hat dies nicht die Nachteile separater Methoden, aber dies sieht (zumindest für mich) nicht besser aus als die ursprüngliche Methode.
Welche Version von SomeLongMethod
ist für Sie wartbarer und lesbarer und warum?