「引数が多すぎて順番を間違えた!」。いくつもの関数を跨いでただ変数を引き回すだけの「終わらないバケツリレー」。それは Data Clumps(データの群れ)と Long Parameter List(長い引数リスト)が引き起こす悲劇。Parameter Object で荷物をカバンに詰め込み、引数の迷宮から脱出しましょう。
便利すぎる「どこからでも呼べるクラス(Singleton)」が引き起こすデータの混線バグ。Dependency Injection(DI)を用いてグローバルな状態を安全に引き剥がす鮮やかな解決劇。
「データ用クラスと処理用クラスを綺麗に分けたはずなのに、修正が辛い」。その原因は、貧弱なドメインモデル(Anemic Domain Model)かもしれません。オブジェクト指向の基本原則 Tell, Don't Ask で解決します。
JSON出力時の型が勝手に変わる!? Perlのレガシーコードで頻発するPrimitive Obsession(プリミティブ型への執着)と、Value Objectを用いたカプセル化による鮮やかな解決劇。
巨大な状態分岐の妖怪「Type Code」に悩まされるカイト。ステータスコードという単なる数字を、コード探偵ロックがStateパターンで「本物の役者」へと昇華させる!
継承の乱用が生み出した「クラスの爆発」。キャンペーンの組み合わせごとに増殖するコードを、探偵ロックがDecoratorパターンで鮮やかに着せ替える!
「1箇所直すと3箇所壊れる」散弾銃手術に苦しむ後輩が、自信過剰な先輩を連れてLCIに駆け込む。コード探偵ロックがObserverパターンで連鎖爆破の呪いを断ち切る!
双子エンジニアが持ち込んだ「瓜二つのコード」。コード探偵ロックがTemplate Methodパターンでコピペの呪いを解く!
「すべてを1つのメソッドで処理する巨大なコード」に苦しむワトソン君。コード探偵ロックがStrategyパターンで神オブジェクトの『におい』を消し去る!
「コードドクター」シリーズの全23回の目次です。GoFの23のデザインパターンを医療ドラマ風に解説します。
eval()でクーポンルールを動的評価していた自信家テックリード。セキュリティ監査でコードインジェクション判定を受け来院。コードドクターが下した診断は「急性eval中毒」。Interpreterパターンによる文法オブジェクトの処方箋。