今日と昨日はC++にどっぷり浸かったわいな.
直交した機能をポリシークラスに分解するとか,多態性を使うべきとかで,リファクタリングするとどうしてもクラスが増えていくなぁー,と思ってたら,重要なことを忘れていた.
- 変更箇所を一箇所に集めよ!
後で合成するために分割するとはいえ,どんどん分解してどうするんだと.そりゃあクラスの数が増えていくだろうと.今回は共通する部品およびポリシーが少ないから,クラスが増えてしまうのだ.
だったら,新しくインタフェースを定義して,中心になるクラスでそれを実装すればよかったんだ.わざわざテンプレートを使ってポリシーに分割するなどというややこしいことをするまでもない.純粋にOOPを実践すればよかっただけだった.なーんだ.
ただ,1つのクラスの役割が大きくなってメンバ関数が増えたせいで,状態管理の必要が出てきた.これはこれでなんとかせねばならん問題だよなあ.うーむ.