ホーム/ アンチパターン図鑑

アンチパターン

アンチパターン図鑑

N+1クエリ・神クラス・コールバック地獄・早すぎる最適化… やりがちな失敗の型を「症状→なぜ悪い→直し方」で引ける図鑑。

この図鑑の使い方

各パターンは「症状(どう気づくか)→ なぜ悪いのか → 直し方」で統一しています。 まず症状から自分のコードに心当たりを探し、直し方だけでなく「なぜ悪いのか」まで押さえるのが、再発を防ぐ近道です。 どのパターンにも共通して、直しすぎ・やりすぎもまた別のアンチパターンになる境界を添えています。

解説記事

パターン一覧

設計レベルから1行レベルまで。症状で逆引きし、なぜ悪いのかと直し方をセットで。

3つの要点中級

N+1クエリ — ループの中でDBを叩く

一覧ページが件数に比例して遅くなる正体が分かり、eager loadingやJOINで1〜2クエリに畳めるようになる。ORMが親切に隠すからこそ気づきにくい定番の性能事故。

3つの要点中級

コールバック地獄 — 右へ右へ伸びるピラミッド

非同期処理をコールバックで積むと、なぜインデントが右に伸び、エラー処理が破綻するのかが分かる。Promiseとasync/awaitで平らに戻す道筋まで。

3つの要点基礎

コピペプログラミング — 同じコードが増殖する

動くコードをコピペで増やした先で、なぜ「同じバグを何度も直す」羽目になるのかが分かる。DRY原則と、逆に共通化しすぎる罠の見分け方まで。

3つの要点基礎

マジックナンバー — 意味不明なリテラルが散らばる

コードに直書きされた 86400 や 0.08 が、なぜ読み手を止め変更漏れを生むのかが分かる。名前付き定数に置き換え、意図をコードに書き込む習慣が身につく。

3つの要点中級

原始的執着 — 何でも string と int で表す

メールも金額もユーザーIDも生のstring/intで持つと、なぜ検証が散らばり取り違えが起きるのかが分かる。値オブジェクトで意味を型に乗せる設計の初手まで。

3つの要点中級

神クラス — 1つのクラスが何でも知っている

「とりあえずここに書く」を続けた先にできる数千行の巨大クラスが、なぜ変更を怖くしテストを不可能にするのかが分かる。責務で割るリファクタリングの初手まで。

3つの要点中級

早すぎる最適化 — 測る前に速さを追う

計測せずに書いた「速そうなコード」が、なぜ効かない上に読めなくなるのかが分かる。ボトルネックを先に見つけてから最適化する、正しい順番が身につく。

3つの要点中級

例外の握りつぶし — catchして何もしない

空のcatchがなぜ最悪のデバッグ地獄を生むのかが分かる。原因の見えない不具合の温床を、記録・再送出・回復の3択でふさげるようになる。