ケイの『「ソフトウェア工学」は矛盾語法か?』について その2

前回の日記(id:paz3:20090605)の続き。『「ソフトウェア工学」は矛盾語法か?』を読んで思ったことのメモです。

それではなぜソフトウェアはこうも複雑なのか? その一つの答えは、普通人間の神経系は類似ではなく差異に惹き付けられるが、類似こそが一見大きく複雑に見えるシステムにある小さな特徴を作り出すものだからだ。差異は時間が経つにつれ問題を引き起こす不必要な沢山の特別ケースを頻繁に生み出してしまう。

私にとって、この部分は大変重要な示唆を含んでいました。
たとえば、UI上の各部分を制御するようなコードを書く場合、それぞれのパーツに特化した、似たようなオブジェクトを複数作りがちなのですが、これだと再利用できず、保守性も低くなってしまいます。

もっと類似している部分に注目し、より汎用のものを作った方が、再利用性や修正しやすさも向上すると思いました。きっとコードも短くなるに違いありません。

たとえばPofEAAの Table Module を個々のテーブルのために記述するのではなく、システムに存在する多くのテーブルを扱えるように記述し、コンストラクタでテーブル名やキー名を渡すのはどうでしょう?テーブルごとに特別な処理が必要な部分は、コールバックやlambdaで渡すような感じにするとか。

フィールドによってはNull不可でデフォルト値を入れる必要があるかもしれません。テーブル定義からフィールド定義を自動的に参照するようにすれば、保守性を上げることができますね。(Microsoft AccessSQL Serverにつなぐと、そんな挙動をします)

DB中立なテーブル記述からActiveRecordを生成するRuby on RailsActiveRecord::Migration は偉大だと思います。