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 #region
ve 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
Task1
veTask2
yalnı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
SomeLongMethod
yö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ü SomeLongMethod
sizin için daha sürdürülebilir ve okunabilir ve neden?