Kang 发表于 2012-12-30 12:11:37

TDD个人实践体会(C#)五

TDD个人实践体会(C#)五

<div class="postbody"><div id="cnblogs_post_body">引言
  之前的blog - TDD个人实践体会(C#)一到四篇,主要是记录了我用TDD的方式编写一个排列组合的选择器,可以在一至四看到TDD如何影响设计、编码、实现阶段。
  这一篇blog主要是记录在TDD如何影响对选择器进行重构的过程。所以,我们用前四篇完成的代码作为我们开始的基础。
  可以 点击这里 下载基础源代码(当然也可以一步步的从一至四看到代码,我个人也建议这么做,虽说看起来蛮长的几篇,其实做完也不需要多少时间。)


目录

[*]重新测试及检查代码
[*]重构设计
[*]重构测试代码
[*]重构功能代码
[*]小结
正文
1.重新测试及检查代码
既然用了TDD的方式,那么在编码的过程中,个人有个体会,就是可以很方便快速的对代码进行测试。这让我可以在任何时候,快速的检查个人的代码。
在编码之前,我和快速的Ctrl + R,Ctrl + A运行了一下测试代码。
测试:通过。
然后打开代码覆盖率结果的窗口查看一下测试代码是否全部覆盖到了代码。(这里补充一句,我原本应该在第四篇结束的时候就查看覆盖率的,但是上次我blog写到半夜两点,困得要命,盖上本子就睡了。)
96.33 % ,这个结果让我感到很奇怪,测试代码覆盖率按照估计,应该100%的。
再来检查一下,没有覆盖到的几句代码:

在求组合的方法中:
<div class="cnblogs_code">private List<T[]> BuildComposeResult(T[] source, int count)
      {
            List<T[]> result = new List<T[]>();
            if (count == 1)
            {
                foreach (T item in source) result.Add(new T[] { item });
                return result;
            }
            if (count == 0) return null;
            for (int i = 1; i <= source.Count(); i++)
            {
                T selectedItem = source.Skip(i - 1).FirstOrDefault();
                List<T[]> subResult = BuildComposeResult(source.Skip(i).Take(source.Count() - i).ToArray(), count - 1);
                if (subResult == null) return null;
                T[] tmp;
                foreach (T[] item in subResult)
                {
                  tmp = new T;
                  tmp[0] = selectedItem;
                  item.CopyTo(tmp, 1);
                  result.Add(tmp);
                }
            }
            return result;
      }
页: [1]
查看完整版本: TDD个人实践体会(C#)五