Bunun gibi uzun bir yöntemim olduğunu varsayalım:
public void SomeLongMethod()
{
// Some task #1
...
// Some task #2
...
}
Bu yöntemde, ayrı bir yönteme veya yerel işleve taşınması gereken tekrarlayan parçalar yoktur.
Uzun metotların kod kokusu olduğunu düşünen birçok kişi (ben dahil) var. Ayrıca burada kullanım fikrini sevmiyorum #regionve bunun neden kötü olduğunu açıklayan çok popüler bir cevap var .
Ama bu kodu yöntemlere ayırırsam
public void SomeLongMethod()
{
Task1();
Task2();
}
private void Task1()
{
// Some task #1
...
}
private void Task2()
{
// Some task #1
...
}
Aşağıdaki sorunları görüyorum:
Sınıf tanım kapsamını, tek bir yöntemle dahili olarak kullanılan
Task1veTask2yalnızca iç kısımlarıSomeLongMethod(veya kodumu okuyan her insanın bu fikri çıkarmak zorunda kalacağı) belgelemem gerektiği anlamına gelen tanımlarla kirletme .Tek bir
SomeLongMethodyöntemde yalnızca bir kez kullanılacak yöntemlerin IDE otomatik tamamlama (örn. Intellisense) .
Bu yöntem kodunu yerel işlevlere ayırırsam
public void SomeLongMethod()
{
Task1();
Task2();
void Task1()
{
// Some task #1
...
}
void Task2()
{
// Some task #1
...
}
}
bunun ayrı yöntemlerin dezavantajları yoktur, ancak bu orijinal yöntemden daha iyi görünmemektedir (en azından benim için).
Hangi sürümü SomeLongMethodsizin için daha sürdürülebilir ve okunabilir ve neden?