【あんちぱたーん】

アンチパターン とは?

💡 「やってはいけない」設計の見本帳
📌 このページのポイント
良い設計パターン vs アンチパターン ✓ 良い設計パターン 単一責任の原則 依存性の注入 疎結合な設計 ✗ アンチパターン 神クラス(God Class) スパゲッティコード コピー&ペースト開発 VS
良い設計パターンとアンチパターンの対比
ひよこ ひよこ

代表的なアンチパターンは?

ペンギン先生 ペンギン先生

①God Object(何でもやる巨大クラス)、②Spaghetti Code(制御フローが複雑に絡み合ったコード)、③Golden Hammer(お気に入りの技術を何にでも使う)、④Premature Optimization(早すぎる最適化)、⑤Cargo Cult Programming(意味を理解せずにコピペする)。どれも「最初は楽だけど後から地獄」になるパターンだよ

ひよこ ひよこ

アンチパターンを知る意味は?

ペンギン先生 ペンギン先生

名前が付いていると「これゴッドオブジェクトになってない?」とチーム内で問題を共有しやすい。コードレビューで「このクラス500行あるけど単一責任原則的に…」と長く説明するより「God Objectになりかけてる」の一言で伝わる。共通語彙としてのアンチパターンの知識は非常に価値があるよ

ひよこ ひよこ

早すぎる最適化って何がダメなの?

ペンギン先生 ペンギン先生

Donald Knuthの名言「Premature optimization is the root of all evil(早すぎる最適化は諸悪の根源)」。ボトルネックがどこか分からない段階で推測で最適化すると、コードが複雑化するのに効果は薄い。まず動くものを作り、プロファイラで計測して、本当のボトルネックだけ最適化するのが正解だよ

ひよこ ひよこ

アンチパターンに陥ったらどうする?

ペンギン先生 ペンギン先生

リファクタリングで段階的に解消するのが基本。God Objectは責務を分割、Spaghetti Codeは関数やクラスに構造化、コピペコードは共通化。一度に直そうとせず、テストを書きながら少しずつ改善する。「ボーイスカウトルール(来た時よりきれいにして帰る)」でコードを触るたびに少し良くしていこうね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「アンチパターン」って出てきたら「一見良さそうだけど実は悪い設計の定番」と思えればだいたいOK!
📖 おまけ:英語の意味
「Anti-pattern」 = 対パターン
💬 Anti(対抗する)Pattern(パターン)。「こうするな」という反面教師だよ
← 用語集にもどる