Zum Hauptinhalt springen
ai-slop/csharp-if-laddermanuelle Behebung

If/else-if-Kette.

Vier oder mehr verkettete `if`/`else if`-Zweige, die denselben Wert per `==` mit einer Konstante vergleichen. Ein ausgeschriebenes `switch`.

Beanstandete und saubere Form.

Jedes Beispiel zeigt genau die Codeform, nach der die Regel sucht, und dann die kleinste Version, die die Absicht bewahrt, ohne Risiken zu verstecken oder Rauschen hinzuzufügen.

csharp-if-ladder.cs
✗ Beanstandet
if (status == "pending")
    return Color.Gray;
else if (status == "active")
    return Color.Green;
else if (status == "suspended")
    return Color.Orange;
else if (status == "closed")
    return Color.Red;
return Color.Black;
Warum das anschlägt

Deterministischer Zeilenabgleich: verfolgt ein `if (x == ...)` mit nachfolgenden `else if (x == ...)`-Zweigen auf derselben Variable und beanstandet die Kette ab vier Zweigen.

csharp-if-ladder.cs
✓ Sauber
return status switch
{
    "pending" => Color.Gray,
    "active" => Color.Green,
    "suspended" => Color.Orange,
    "closed" => Color.Red,
    _ => Color.Black,
};
Was sich geändert hat

Nutze ein `switch`-Statement oder -Ausdruck, oder ein Dictionary von Handlern, wenn jeder Zweig einen Wert auf eine Aktion abbildet.

Jeder neue Fall wird zu einem weiteren `else if`. Agenten verlängern die Kette, statt sie umzubauen, also wächst sie mit jedem Feature.

Wie diese Regel begründet ist.

Regel-ID

ai-slop/csharp-if-ladder

Prüfende Engine

ai-slop

Erkennungsstrategie

Deterministischer Zeilenabgleich: verfolgt ein `if (x == ...)` mit nachfolgenden `else if (x == ...)`-Zweigen auf derselben Variable und beanstandet die Kette ab vier Zweigen.

Legitimer Code, der NICHT beanstandet wird

Ketten mit drei oder weniger Zweigen, Ketten, die die Variable wechseln oder andere Operatoren nutzen, sowie bestehende `switch`-Statements werden nicht beanstandet.

Belege

Teil des C#-Regelsatzes von aislop. Vollwertige C#-Unterstützung, einschließlich C#-spezifischer AI-Slop-Regeln, kam mit aislop v0.14.1.