2008-08-11
privateメソッドのテスト
privateメソッドのテストを別クラスに書くために、リフレクションを使ってprivateメソッドを呼び出していたのですが、リフレクションだとやや遅くなるという問題がありました。
よくよく考えてみると、テストコードの場所が、別クラスではなくても良く、別ファイルにしたいというだけなら、C#2.0で加わった機能であるpartial classが使えますね。
partial classを使うと、1つのクラスを複数のファイルに分割して記述することができますので、テストコードを別ファイルに追い出すことができると思います。
追い出したテストコードは、#if DEBUG 〜 #endifで囲っておけばなお良さそうです。
テスト駆動開発
ファミコンエミュレータの開発では、6502の一つの命令ごとにテストを書いています。テストでは、テスト対象命令に関係する入力データの全パターンについてログを出力して、既存のエミュレータが出力したログと結果が一致するか検証しています。
NUnitとかを使っているわけではないのですが、手法的にはテスト駆動開発と言っていいと思います。
まあ、テストを書くのが面倒ではあるのですが、入力データ全パターンで結果が一致するっていうことは、通常ケースではバグが無いことが確定なわけで、かなり精神衛生上よろしいものがあります。
テストが一発で通ると、非常に気持ちいいですね。
ネットカフェ
PG | |
![]()
最近の休日は、コーディングしてるか、釣りに行くかの2パターンです。
コーディングは、ネットカフェからDesktopVPNで家のマシンにリモートログインして、作業することが多いです。
セキュリティ的に多少心配な気はしますが。
家で作業するより、なぜかずっとはかどるんですよ。
どこ行くかな
日記 | |
![]()
中学時代の友人から電話がかかってきて、明日どこかに出かけることになった。
どこに出かけるかはその電話では決まらなかったので、とりあえず保留になった。
男二人で出かける場所って何があるかなあ。
暑かったら海水浴っていう手もあったんだけど、最近涼しいし…
釣りっていう手もあるなあ。
どっかにドライブに行くとしたら、どこがいいだろうか。
アドレッシングモード
6502のアドレッシングモード全種類を、とりあえず実装しました。
以下のページを参考にしました。図があって分かりやすいです。
http://apple2.world.coocan.jp/Apple2World_Wiki/index.php?title=6502
---
プライベートなメソッドを、別クラスに書いたテストコードから呼び出すために、リフレクションを使用するようにしました。
テストコードでは、メソッドの呼び出しが数十万回あるため、リフレクションを使用するようにしたら明らかに遅くなりました。
テストの実行完了まで30秒ぐらい掛かります。
まあ、待てない時間ではないので、良しとします。
質より量
PG | |
![]()
http://d.hatena.ne.jp/KZR/20080808/p1
とてもドキっとさせられたエントリ。
私は今までかなりの時間をコードを書くことに使ってきた気がするが、ソフトとして完成させたものはいくつあっただろうか?
個人でコードを書いて、それなりにまとまった形で、世に送り出したものは一つもなかった気がする。
頭でっかちに考えて、結局途中で投げ出してしまったパターンしかない。
いい物を作り出している人は、ほとんどの場合、たくさん作ってる人なんだよね。
何年もかけて一本のソフトを作ろうとしたって、完成しない可能性が高い上に、いい物になるはずが無い。
大学の研究室の教授(私がとても尊敬している先生です)にも、研究で行き詰っているときに「とにかく手を動かしなさい」と言われたことを思い出した。
頭だけで考えていると、「…でなければならない」式の考えにとりつかれて、先に進めなくなるんだよね。
ソフトを作る場合には、自分の場合は2ヶ月でとりあえず完成させることを目標にしたほうが良いと思う。2ヶ月以上掛かるようでは、目標が過大すぎる。
大きな目標を立てることはとても簡単なことだ。
でも、そんな達成できる見込みもない目標を立てたところで意味が無い。
逆に、小さすぎる目標にも意味が無い。
目標達成したときの意義を失わない範囲で、最小の目標を立てることが重要ではないかと思う。
俺には全くできないプログラミングですががんばってください
(´・ω・`)コメントに深い意味は無いです