2005-10-24
ユーザビリティはソースコードの中にも存在する
私が書いたリアルタイムシミュレーションコードに間違いがあると、以前から指摘されていた。その原因が昨日わかった。問題のあるクラスのコンストラクタにエネルギを入力する必要がある。その引数の名前がE。コンストラクタはその引数を0.511で割った値を、メンバ変数Eに代入する。すなわち
class Simulator{
private double E;
private double k;
public Simulator(double E){
this.E = E/0.511;
k = ....
}
....
};ここでメンバ変数kを初期化するのに、0.511で割ったエネルギを使って計算しなければならないのだが、仮引数Eで計算していた。Eではなくthis.Eを使わなければならなかった。何日もどこに問題があるのか頭を悩ませていたのだが、結局はこういうことだった。
これは防せげたBugである。たとえばメンバ変数の名前がGammaだったらこの問題は起こっていない。さらに物理的にもGammaという名前のほうが自然だ。 医療施設や軍、原子力施設といった、人の命にかかわるような施設では、間違いを起こさないように正しいところにしかささらないようなコネクタが採用されているように、間違いようのないデザインが採用されている。今回のことでコネクタといった工業製品のだけでなくソースコードにもこの思想がなければならない。そう思った。
このblogは、http://www.argv.org/~chome/blog/noisefactory/に移転しました。
Subscribe to Comments [Atom]
