同じ振る舞いをするコードのどちらを採用するべきかの判断基準を整理してみる

  • 条件分岐箇所が少ない
  • コード量が少ない
  • 外部ライブラリへの依存度(質と量)が小さい
  • オープン・クローズの原則(OCP)に沿っている

3つしか思いつかなかった><4つにした。

条件分岐箇所が少ないということは、振る舞いの場合分けが単純化されているってことで、試験性や保守性が高い。オブジェクトの多態によって振る舞いを切り替える場合も、インスタンスの取得時に条件分岐を集中させ、個別のメソッドでは条件分岐させないようにしている。

トレードオフになる部分もある。外部ライブラリを使わないようにすれば外部依存の量は減るが、コードの量が増える。外部ライブラリへのアダプターを用意すると依存の質は向上するかも知れないが、アダプターの量だけコードの量が増える。どちらが良いかは外部ライブラリの質によるところが多そうかな。

この基準はメソッド単位、クラス単位、パッケージやライブラリ単位でもいけそう。

あ、オープン-クローズの原則も入れるべき?

→入れるべき。これで、内部設計の問題(条件分岐とコード量)、自→自の依存(外部依存性)、他→自の依存(OCP)、3つの観点が網羅されたわけだ。ん?他から自への依存は振る舞い自体の検討になるのかな?