何でもできるのがいいとは限らない -- 何事にも代償がある

  • (by K, 2007.04.08)
  • これは主に自分への戒めを忘れないようにするためのもの

(1)

  • プログラムを作っていて(たとえばOSASKとかKHBIOSとか)、いろいろ拡張性を持たせようと設計を工夫することがある。そして○○もできる、××もできる、みたいな「よさそうな設計」ができてくる。「あんな場合もこんな場合もOK」みたいにできて、すごく満足する。・・・しかしこれは多くの設計者が陥る罠だ。ダメな設計になっている可能性がある。というか他の設計者はそれで満足なのかもしれないけど、僕はそんな設計で満足してはいけない。
  • そんな拡張性をたくさんつけたとして、それは本当に使うのか。必要なのか。その拡張性のために何が犠牲になっているのか。何も犠牲にしない拡張性なんて原則としてありえない。非常に小さいかもしれないけれど、とにかく何かを犠牲にしているはずで、それを正確に把握するのは絶対に必要だ。そしてその犠牲と拡張性が生かされる状況の両方を秤にかけて、どうするかを検討するべきだ。
  • 一つの拡張性を見送った結果、「じゃあこの拡張性もいらないか」と連鎖的に拡張性が省略される場合がある。これはたいていすごくいい結果を生む。どうもそういう傾向がある。本質的に設計が単純化されて、再設計への道が見えてきて、それで設計すると劇的に改善する。

(2)

  • 逆に最初は拡張性をまったく考慮していなくて、あとから別のソフトウェアを作ろうとしたらあまりにも共通部分が多いので拡張機能として実装できるように改造した、みたいなのは、仕様が汚くなる可能性はあるものの、機能としては不要なものがないのでとてもよい。仕様が汚くなってそれが気に入らない場合、それ以上の拡張機能の追加なしで再設計すれば、最良となる。

こめんと欄


コメントお名前NameLink

リロード   新規 編集 差分 添付   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
Last-modified: 2007-04-08 (日) 14:30:24 (5561d)