2009年11月3日火曜日

ロジックの構造

if文が多すぎるとコードが読みにくくなるから、減らした方がいいというアドバイスを随所で見かけると思うが、減った分はどこへいってしまうのだろうか?

1)単にコードブロックを分離しただけ
  ブロックとしてのコードにはifは減っているが、他の部分に分散しただけ
  もっとも、それだけでずっと読みやすくなるが、分離による弊害もある
2)不要なifをなくしたもの
  条件としてありえないものや、不変なものを省略する
  たしかにifは減るが、かえって分かりにくくなる場合もあると思うのだが、、、
3)OOの多態性を使用したもの
  ifの代わりにパラメータによる自動バインディングや、Interfaceへの動的実装代入など(DI)
  プログラムの代わりに言語システム側にやってもらう
  あったはずのifが言語システム内部に埋没するので、かえって分かりにくいかも、、

こう考えると、根本的にロジックを改革しなかぎり、ifは減っていなのであり、減ったように見せかけているだけということになる。

この部分にDSLを導入するのは効果が高い気がするので、どうやったらいいかが研究課題だ。

0 件のコメント: