İçeriğe geç

Flow complexity (ARCH714)

Anahtar dotnet.codequality.flow-complexity · Önem warning · Kategori codequality

Dalları ve döngüleri, okuyanın aynı anda birkaç koşulu akılda tutmasını gerektirecek kadar iç içe geçmiş metodu işaretler. Her if, döngü, catch, switch ve üçlü ifade bir puan artı iç içe geçtiği her seviye için bir puan tutar; else ve else-if bir puan; aynı && ya da || zinciri bir puan; kendini çağıran metot bir puan. 15’in üstü raporlanır.

foreach (var order in orders)
{
if (order.IsPaid)
{
foreach (var line in order.Lines)
{
if (line.Stock > 0 && line.Active)
{
try { Ship(line); }
catch (Exception) { if (retry) Queue(line); else Fail(line); }
}
}
}
}
foreach (var order in orders.Where(o => o.IsPaid))
ShipLines(order);
void ShipLines(Order order)
{
foreach (var line in order.Lines.Where(IsShippable))
TryShip(line);
}