Archive for 11月, 2009
データ破損の原因が判明
今日はちょっとプログラミング寄りなお話。
ずっともやもやしていたデータ破損の原因が判明しました。
原因:意図せず行った参照渡しで、別箇所での値変更が発生していました。
VBのプリミティブ型の引数はByRefにしない限りは基本、値渡し(ByVal)ですよね。
うちのシステムでは、株式市場の取引日とザラ場時間のみを表わすようにDate型をラップしたKabuDate2型というのを用意しているわけですが、こいつを・・
・・とここまで書いてめんどくなった。
くどくど説明するより、再現コード。
艦長。トゥボックがニーリックスに変質してしまっています・・。
VBではクラスのインスタンスをByVal渡しした時には参照が渡されるという仕様は百も承知なのですが、これを忘れていた、というか忘れてもいなかったのですが・・なんというか・・、そう・・。見落としていた。・・いや、ちがう。こんなの書いてる時点で気づかなくてもしかたない・・。うーん。
ニーリックスに変質するタイミングがコード的に遠い位置の場合、ちょっと見つけにくいバグになります。
どうしてもByValという表記は値渡しをイメージしてしまいますよね・・。
というお話。