eslint/no-dupe-else-if 正しさ
何をするか
if-else-if チェーン内の重複した条件を禁止する
なぜ問題なのか
if-else-if チェーンは、特定の条件に基づいて複数の分岐のうち、たった一つ(または最大一つ)のブランチのみを実行する必要がある場合に頻繁に使われます。
同じチェーン内に同一のテスト条件が二つあることは、ほとんど常にコード上のミスです。式に副作用がない限り、重複した条件はチェーン内の前の同一式と同じ真偽値を評価することになり、そのブランチは決して実行されません。
例
このルールに違反する不適切なコードの例:
javascript
if (a) {
foo();
} else if (b) {
bar();
} else if (b) {
baz();
}javascript
if (a || b) {
foo();
} else if (a) {
bar();
}javascript
if (n === 1) {
foo();
} else if (n === 2) {
bar();
} else if (n === 3) {
baz();
} else if (n === 2) {
quux();
} else if (n === 5) {
quuux();
}このルールに準拠する適切なコードの例:
javascript
if (a) {
foo();
} else if (b) {
bar();
} else if (c) {
baz();
}javascript
if (a || b) {
foo();
} else if (c) {
bar();
}javascript
if (n === 1) {
foo();
} else if (n === 2) {
bar();
} else if (n === 3) {
baz();
} else if (n === 4) {
quux();
} else if (n === 5) {
quuux();
}使用方法
設定ファイルまたは CLI を使ってこのルールを有効化するには、以下のようにします。
json
{
"rules": {
"no-dupe-else-if": "error"
}
}bash
oxlint --deny no-dupe-else-if