Zum Hauptinhalt springen
ai-slop/python-isinstance-laddermanuelle Behebung

isinstance-Leiter.

Vier oder mehr `if`-/`elif isinstance(x, ...)`-Zweige, die dieselbe Variable prüfen. Typ-Dispatch von Hand ausgeschrieben, ein Zweig pro Typ.

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.

python-isinstance-ladder.py
✗ Beanstandet
def to_json(value):
    if isinstance(value, datetime):
        return value.isoformat()
    elif isinstance(value, Decimal):
        return str(value)
    elif isinstance(value, UUID):
        return str(value)
    elif isinstance(value, Enum):
        return value.value
    return value
Warum das anschlägt

Deterministischer Zeilenabgleich: zählt `if`-/`elif isinstance(name, ...)`-Zweige auf dieselbe Variable mit derselben Einrückung und beanstandet die Leiter ab vier Zweigen.

python-isinstance-ladder.py
✓ Sauber
@singledispatch
def to_json(value):
    return value

to_json.register(datetime, lambda value: value.isoformat())
to_json.register(Decimal, str)
to_json.register(UUID, str)
to_json.register(Enum, lambda value: value.value)
Was sich geändert hat

Nutze eine nach Typ geschlüsselte Handler-Map, `functools.singledispatch` oder ein Protocol, oder normalisiere die Eingaben in eine einzige Repräsentation, bevor die Logik läuft.

Sollen Agenten einen weiteren Eingabetyp unterstützen, fügen sie einen weiteren `elif isinstance`-Zweig hinzu. Über mehrere Iterationen wächst die Leiter, statt dass das Design neue Fälle aufnimmt.

Wie diese Regel begründet ist.

Regel-ID

ai-slop/python-isinstance-ladder

Prüfende Engine

ai-slop

Erkennungsstrategie

Deterministischer Zeilenabgleich: zählt `if`-/`elif isinstance(name, ...)`-Zweige auf dieselbe Variable mit derselben Einrückung und beanstandet die Leiter ab vier Zweigen.

Legitimer Code, der NICHT beanstandet wird

Leitern mit drei oder weniger Zweigen und Zweige, die verschiedene Variablen prüfen, werden nicht beanstandet.

Belege

Ausgeliefert in aislop v0.9.4 als eine von vier Python-Geschwätzigkeitsregeln, abgeleitet aus SlopCodeBench (arXiv 2603.24755).