kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

テストとサンプルコード、特殊なコードに関する話

[id:kkamegawa:20100905:p1]の続き。世の中にはサンプルソースが結構いっぱいで回っているわけですけど、技術の解説をするために用意されたサンプルをそのまま使っちゃうとちょっと困ったことになることとかありません?
典型的な例だとLINQ to SQLWCFのサンプルのまま作っちゃって、「テストのためにいちいちapp(Web).config書き換えるの面倒〜」とか、ないでしょか?

  var db = new HogeDatabaseContext()
  var result = from p in db.Data
               ....

これでリリースすると、App.configの扱い困ったり、テストするときに必ずその接続先がないと動かない(特にSQL Server Expressで作ってチェックインしたあと、自動ビルドでテストすることになるなど)。
技術サンプルは技術そのものを説明するために余計なコードを省いていることがほとんどです。単体テストとかでやる場合、こういうノイズになるような設定はできる限り外から与えられるようにしないと後が大変ですね。
ほかにもSystem.Security.Principal名前空間にあるような確実に実行タイミングで確定できないような条件で分岐してしまうようなコードをロジック内に埋めてしまうと途端にテストがしにくくなったりしますね。
こういうところを見きって、設計できるようになるとぐっとテストしやすくなるはずです。面倒だと思っていても、後のコストが違うはず。