Koşulsuz özyineleme (ARCH717)
Anahtar dotnet.codequality.unconditional-recursion · Önem critical · Kategori codequality
Her yolda kendini çağıran bir metodu ya da kendini okuyan bir property getter’ını işaretler: çağrıdan önce dönebilecek, hata fırlatabilecek ya da dallanabilecek hiçbir şey yoktur, özyineleme hiç bitmez ve süreç stack overflow ile çöker.
Bir çıkış yolu olan özyineleme normal koddur. if, döngü, switch, try ya da lambda içindeki, ya da ?:, &&, ||, ??, ?. arkasındaki bir çağrı raporlanmaz. Başka bir overload’a ya da base’e yapılan çağrı da raporlanmaz. Kendine atama yapan setter Sonsuz özyineleme (CA2011) kuralıdır.
Yanlış
Bölüm başlığı “Yanlış”public string Name => Name;
public int Sum(int n){ var doubled = n * 2; return Sum(doubled);}private string _name = "";public string Name => _name;
public int Sum(int n){ if (n <= 0) return 0; return n + Sum(n - 1);}