代码复审

我们CodingCook复审的是WWW的代码,他们的项目是时间管理助手(TimeLine)。只是跟根据自己的经验来看,不一定准

先说一下整体的感觉。WWW的代码用了应该是比较符合面向对象的思想,借口,封装随处可见,也能见到一些设计模式。同时,以我的水平看来,代码质量比较高,格式规范,没有低级错误。

我主要就说我看的这个Logic模块(加空行注释1600+)

分项说明

1.  注释。这一点做的不错,至少我看到了不少,能够说明代码的作用。基本上每一块代码前都有注释。不足就是,存在几块废弃代码没有删除。

2.  代码格式。变量名非常符合C#的语言规范,且容易辨别有意义。四空格缩进。空行稍多,不是很习惯,不过这个和个人习惯相关。不足就是虽然许多地方断句不错,但仍有超长的代码行存在(120+),不利用阅读,建议是一行代码不超过80(这样的话,即使同一个显示器分开两个窗口,也不会造成阅读困难)。同时,对于单语句的if格式不统一(详见举例)

3.  异常捕获。这一点这一段代码做的不好。直接catch的是Exception。这是一个不好的编程习惯,虽然说比较方便,但是也不方便调试,同时也可能会忽略真正的错误,漏掉代码隐藏的Bug。

4.  其他。todo标记、warning标记,这个很好,不过要记得完成。

具体的代码段列举一二

1. 两个if没有必要,可以直接以 && 连接两个条件,代码功能完全相同

if (string.Compare(obj.Value, ip.TagLabel, true) == 0)
{
    if (!gTagMapping.ContainsKey(obj.Key))
    {
        gTagMapping.Add(obj.Key, ip.TagLabel);
        inverseMapping.Add(ip.TagLabel, obj.Key);
    }
}

 

2. return之后仍有代码,应该是粗心导致。

return;
//by kitty & fancy start
if (string.IsNullOrEmpty(outputFileName))
    //outputFileName = "summary_from"+startTime+"_to_"+endTime+".txt";
outputFileName = "summary.txt";

 

 3. 单语句if格式应统一

if (cTask > 0)
    return iLiferInterface.DayState.DUEDATE;

if (tag == -1)
{
    tag = AddTagType(taglabel);
}

  

posted @ 2012-12-11 23:57  CodingCook  阅读(399)  评论(0编辑  收藏  举报