【あんちぱたーん】
アンチパターン とは?
最終更新:
💡 「やってはいけない」設計の見本帳
一見良さそうに見えるのに、実際には後で問題を引き起こす設計や実装のやり方。名前を付けて共有することで、チームで早めに気づけるようにする。デザインパターン(良い解決策の型)と対比して使われる言葉。
📌 このページのポイント
代表的なアンチパターンは?
アンチパターンを知る意味は?
名前が付いていると「これゴッドオブジェクトになってない?」とチーム内で問題を共有しやすいんだ。「このクラスは500行あって責任が多すぎて…」と長く説明するより、「God Objectになりかけてる」の一言で伝わる。問題を早めに見つけるための共通語彙になるよ
早すぎる最適化って何がダメなの?
ドナルド・クヌースが1974年の論文で「早すぎる最適化は諸悪の根源」と書いたことで有名だね。ただ同じ箇所で、重要な3%の部分の最適化は逃すべきではないとも書いているよ。どこが遅いか分からない段階で勘で最適化すると、コードが複雑になるのに効果は薄い。まず計測して、本当に遅い部分を最適化するのが基本だよ
アンチパターンに陥ったらどうする?
リファクタリングで段階的に解消するのが基本。God Objectは責務を分割、Spaghetti Codeは関数やクラスに整理、コピペコードは共通化。一度に直そうとせず、テストを書きながら少しずつ改善する。「来た時よりきれいにして帰る」つもりで、コードを触るたびに少し良くしていこうね
良いパターンを使っていれば安心なの?
そうとも限らないんだ。マーティン・ファウラーも、同じ解決策がある状況では良いパターンで、別の状況ではアンチパターンになると書いているよ。パターンの名前だけで判断せず、今の状況で本当に問題を解決しているかを確かめることが大事なんだ
まとめ:ざっくりこれだけ覚えればOK!
「アンチパターン」って出てきたら「一見良さそうだけど実は悪い設計の定番」と思えればだいたいOK!
📖 おまけ:英語の意味
「Anti-pattern」 = 対パターン
💬 Anti(反対の)とPattern(パターン)を組み合わせた言葉だよ。1995年にアンドリュー・ケーニッヒが雑誌の記事で使い、「表面上は解決策に見えるけど、実は解決策ではないもの」という意味で紹介されたんだ