概要
「間違った抽象化」 の問題とその影響について解説。 重複 は「間違った抽象化」よりも安価で安全と主張。 抽象化の失敗 がコードの複雑化や保守性低下を招く流れを説明。 重複の再導入 によるリセットのすすめとその手順を紹介。 99 Bottles of OOP の新刊情報も掲載。
「間違った抽象化」と重複の選択
- RailsConf 2014 で「重複は間違った抽象化より遥かに安価」と主張
- 「間違った抽象化より重複を選ぶべき」 というアドバイスが多くの共感を呼ぶ
- 抽象化の誤用 が業界全体で広く深刻な問題であることを再認識
「間違った抽象化」が生まれる流れ
- プログラマA が重複を見つけ、抽象化して新たなメソッドやクラスを作成
- 既存コード が「正しい・必要」と錯覚しやすい心理的圧力
- 新しい要件 が現れ、既存の抽象化が完全には適合しない状況
- パラメータ追加や条件分岐 で抽象化を無理やり維持
- 複雑化と可読性低下 が進行、保守が困難に
サンクコスト効果とその罠
- 既存コードへの投資 (サンクコスト)が手放しづらさを助長
- 「これだけ複雑なら重要なはず」 という無意識の思い込み
- 間違った抽象化 にこだわることで開発効率が大幅に低下
解決策:重複の再導入
- 抽象化をやめて、各呼び出し元にコードをインライン展開
- 不要な分岐やパラメータ を削除し、それぞれに必要な処理だけを残す
- 本来の重複 やパターンが見えやすくなり、再抽象化の判断が容易に
- 新機能追加や保守 が格段に簡単に
まとめと提言
- サンクコスト効果 に惑わされず、間違った抽象化は早期に見直すべき
- パラメータ渡しや条件分岐 が増えたら抽象化の見直しサイン
- 重複の再導入 は後退ではなく、より良い前進
- 自身と後続の開発者のためにも、間違った抽象化は積極的に解消
99 Bottles of OOP 新刊情報
- 99 Bottles of OOP 第2版のリリース
- 3つの新章 追加、1.5倍のボリューム
- Ruby, JavaScript, PHP 各言語版を用意
- epub, kepub, mobi, pdf 各フォーマットで提供
- 1回の購入で全バージョンのダウンロード権利を付与