代码复审结果

我们负责对FightingSnail团队的pipeline项目进行复审。

发现的问题有如下几点:

  1. 在程序段前比较复杂的注释,或许用”/*”、”*/”比较好些,也节省开发者自己的时间,如:

AssemblyInfo.cs中的

// 有关程序集的常规信息通过以下

// 特性集控制更改这些特性值可修改

// 与程序集关联的信息

[assembly: AssemblyTitle("parserQA")]

[assembly: AssemblyDescription("")]

  2.  有些较长的程序段没有相应注释,如:

PageAnalyze.cs中没有阐述以下这段循环的作用(个人认为循环都是蛮重要的,弄清意义更容易判断其初始状态和终止条件是否正确)

for (int j = 0; j < num; j++)

                {

                    HtmlNodeCollection nodes6 = doc.DocumentNode.SelectNodes("/html/body/div[3]/div[2]/div[2]/div[2]/div[3]/div[2]/div[" + (j + 1) + "]/div[2]/div[1]");

                    ……

                    answers.Add(tmp);

                    //break;

                }

  3.  PageAnalyze.cs中的processQAPages函数,如果没理解错,好像success的初始值赋错了,代码如下:

{

bool success = false;

            if (url.IndexOf("social.msdn.microsoft.com") != -1) // 这里表明是social msdn里面的内容

                success = msdnsocial();

            else if (url.IndexOf("q.cnblogs.com") != -1)  // 表明是博问的网页

                success = cnblogs();

            else if (url.IndexOf("stackoverflow.com") != -1) // 表明是stackoverflow的网页

                success = stackoverflow();

            else if (url.IndexOf("zhidao.baidu.com") != -1) // 变明是百度知道的网页

                success = baiduzhidao();

            else

                success = false;  // 如果处理都不成功的话,返回false

            return success; // 处理成功的话,返回true,用作后面数据库的判断

}

另外,提醒一下,以上程序注释中有部分错别字(“变明”),其它地方可能也会存在,感觉在软件发布前检查改正一下可能会比较好…

  4.   QAPair.cs中的:

        public DateTime PostTime { get; set; }

        public List<Answer> Answers { get; set; }

        public List<Tag> Tags { get; set; }

是不是加个注释好些,感觉在类中的注释详细一些,对理解整个程序有很大帮助。

  5.   一个.cs中的代码,注释风格不同:

 

bool success = false;
            if (url.IndexOf("social.msdn.microsoft.com") != -1) // 这里表明是social msdn里面的内容
                success = msdnsocial();
            else if (url.IndexOf("q.cnblogs.com") != -1)  // 表明是博问的网页
                success = cnblogs(); 
            else if (url.IndexOf("stackoverflow.com") != -1) // 表明是stackoverflow的网页
                success = stackoverflow();
            else if (url.IndexOf("zhidao.baidu.com") != -1) // 变明是百度知道的网页
                success = baiduzhidao();
            else
                success = false;  // 如果处理都不成功的话,返回false
            return success; // 处理成功的话,返回true,用作后面数据库的判断

 

注释详细,到位。

 

 else
                {

                    for (int i = 0,j = 0; i < answerNums;j ++)
                    {
                        Answer tmp = new Answer();
                        temp = null;

                        string temp2 = null;
                        HtmlNodeCollection nodes8 = doc.DocumentNode.SelectNodes("/html[1]/body[1]/div[4]/div[2]/div[1]/div[2]/div[2]/div["+ (j + 2)+"]");
                        foreach (HtmlNode node in nodes8)
                        {
                            temp2 += node.InnerHtml.Trim();
                        }
                        if (temp2 == "" )
                        {
                            //i--;
                            continue;
                        }

                        HtmlNodeCollection nodes6 = doc.DocumentNode.SelectNodes("/html[1]/body[1]/div[4]/div[2]/div[1]/div[2]/div[2]/div[" + (j + 2) + "]/table[1]/tr[1]/td[2]/div[1]");
                        foreach (HtmlNode node in nodes6)
                        {
                            //Console.WriteLine(node.InnerText.Trim());
                            temp += node.InnerText.Trim();
                        }
                        
                        tmp.Id = i;
                        tmp.Content = temp;

                        temp = null;
                        HtmlNodeCollection nodes7 = doc.DocumentNode.SelectNodes("/html[1]/body[1]/div[4]/div[2]/div[1]/div[2]/div[2]/div[" + (j + 2) + "]/table[1]/tr[1]/td[2]/table[1]");
                        foreach (HtmlNode node in nodes7)
                        {
                            temp += node.InnerHtml.Trim();
                        }
                        //Console.WriteLine(temp);
                        Match match = reg.Match(temp);
                        temp = temp.Substring(match.Index, 19);
                        //Console.WriteLine(temp);
                        tmp.PostDateTime = genDateTime(temp);
                        answers.Add(tmp);
                        i++;

                    }

 

好长一段,都没有注释,非常费解…

 

 catch (Exception e)
            {
                return false;
            }
                if (answerNums == 0)  // 一个问题的回答数量为0
                    return false;

 

 

同样是return false ,怎么待遇还不同呢...

 

从代码规范和可读性而言,整个程序,我觉得最好的一点是:没有以注释形式存在的废弃代码,很多人都有一个习惯,就是在修改程序的时候把过去的一段注释掉,以备参考,而这个程序中都没有,显得很干净。至于功能方面,没有测试成功。再细化的审查,鉴于对这个工程缺少了解,无法进行。

posted @ 2012-12-12 22:25  SuperBrothersTeam  阅读(269)  评论(4编辑  收藏  举报