`
qcyycom
  • 浏览: 190912 次
社区版块
存档分类
最新评论

到底该怎么样做代码审查?

阅读更多

 

近几天,算是掉进来一个巨大的焦油坑,我和另外三个同事备受折磨。现在三个有一个跑去装机器了,暂时不写代码,还有我和另外一个同事。

其实代码复杂度不是很复杂,但是代码审查(简称CR)就是过不了,来来回回的改,若是去和较真CRer,貌似也理由也不是很充分,添加的CR评论多半是“我觉得”,“我认为”,CR代码的spell check和style check胜过代码的逻辑check。

比如,你一个循环,可能多半人都会这么写:

for(int i=0;i<100;i++)
{
    ......
}
 

但是可能有些人会这么写

 

// The max number is 100
int maxNum=100;

// Add some comments here
for(int num=0;i<maxNum;i++)
{
    .......
}

 当然第二种方式看起来比第一种“优雅”,但是我认为第一种也不为过。

现在没人关心这段代码能不能得到想要的结果,这个只能写code的人去心中有数了。

 可能有人会提到易读性,维护性,我想这个有时候有点小题大做了,代码足够简的情况下,如果还要掰扯个最优写法,吹毛求疵,不为过。

如果写每一段代码都要考虑,这个是不是别人看会不会明白?会不会造成误解?是不是已经足够清晰?

那这个就不是写代码,这个就是写文章了。

我认为代码的易读性跟怎么写不太有关系,而是跟你整个框架的搭建,对行为的抽象精炼有关系。

再举个例子:http://msdn.microsoft.com/en-us/library/ms243496(v=vs.110).aspx

相信大家在写单元测试的时候广泛用到Assert,有这么一个方法。\

 

public static void AreEqual(
    Object expected,
    Object actual,
    string message
)
 

关于第三个message参数,msdn是这么定义的:

 

messageType: System.String
A message to display if the assertion fails. This message can be seen in the unit test results.
 

说白了就是写一个信息,然后在断言失败的时候打印出来。

但是注意,这虽然是一个message of error,但是msdn 没有将message定义为errormessage,errormsg等。也就是说没有给这个message定性,只是说在失败的时候打印一个message。

其实你要是说写一个Assert.AreEqual("Bob", userName, message) 你会怎么写你的message。

如果失败,他会打印出:

 

Expected : "Bob"; Actual :"Boa", message
 

先说我的想法,我是在message写明这个断言的作用,会写“Verify if the user name is 'Bob' or not”, 表明这个断言在验证什么。

但是按照我们现在的写法,他需要写成“ Verify user name  ‘Bob’ fails.”, 区别在于我的是个不确定的语气,而规定是肯定句。

 

其实有必要掰扯message怎么写吗?按照多数人来说,可能觉得微不足道。

我其实两者怎么·写都可以接受,但是就因为我的这种写法,被谈话许久,其实最后的的结论就是看到第二种写法,第三者不用看code就知道哪里的功能错了。

这个理由仍然不能让我信服,既然你能看到message,说明断言已经失败了,继而看到这个断言在验证什么也可以推知错误所在。

最后我把messge给删除了,就光verify,不显示message,也不错吧。

但是人在屋檐下,怎么着我都是能接受的,你让我怎么写我就怎么写,你制定出个rule出来,我follow就好了,不是吗?

这就好比我不懂OO,我反OO难道我就不能写出好的code吗?不见得(我且认为满口OO的人,才是最不懂OO的人)

=================================================================================

代码如文章,现在几个人写一本书也不可能都文风一致。

现在每天最头疼的,不是功能如何事先,而是纠结

如何给一个变量起个名字,现在是能不用变量就不用变量,函数里套函数

如何添加注释,现在是能不写就不写,写了 反倒多余

代码空格对齐问题   哪里少了1个空格,哪里哪里要对齐。。。。。。

新function能不写就不写,堆代码,写了有人会comment

蛋疼的事情一大堆

。。。。。。。。。。。。。。。。。。。。。。。。。。。

新的代码怎么放置,添加一个文件如何命名,一个变量放在哪个文件里都需要请示。

====================================================================================

 关于代码风格,我认为只要不是堆砌,只要风格简洁,思维通顺,就为好的。而且你既然作为一个程序人员,基本的阅读别人代码的能力是必须的。

好的代码能让人明白你的思维,你能明白你当时的设计思路。

跟一同事飞总说了两句,说了句经典的:他们看不懂逻辑,所以就只能挑code style和format的错。

 

啰嗦完毕,吃饭

也请大家谈谈自己的意见,该怎么做CR经济又实惠?

先谢谢大家

3
1
分享到:
评论
2 楼 songgz 2012-06-11  
你是一个会思考的人,前途无量,代码审查显然不能以风格和规则为主,那只是九牛一毛的事,或者说自然而然的事,高手心中是没有规则的。规则是小毛贼为了照猫画虎,硬制造的,简直就东妃效颦。代码审查当然以逻辑,结构,性能为主,甚至于架构和设计。何必据于形式呢,什么可读性啊,都是胡扯,只有要自身能力高,一切皆可读,不然好的设计,你还读不明白呢,就说不可读吗?
1 楼 Leon.Wood 2012-06-09  
写出让计算机读懂的代码很容易,写出让人读懂的只有高手才能做到.
华为连tab都不许用,缩进必须4个空格.存在即合理.

相关推荐

    代码审查表和代码审查实例

    代码审查是软件开发过程中的重要环节,它有助于提高代码质量,发现潜在的错误,以及确保遵循最佳实践。在Java编程中,代码审查同样至关重要,因为Java作为一种广泛应用的面向对象语言,其复杂性和广泛性需要严谨的...

    java代码审查表.pdf

    Java代码审查表重要性激活级别检查项结论总计命名重要性规则 一、代码命名规则 Java代码审查表中关于命名规则的重要性激活级别检查项有: * 命名规则是否与所采用的规范保持一致?(重要20) * 变量是否已经在...

    代码审查规范.doc

    代码审查规范 代码审查是软件开发过程中的一种质量控制机制,它旨在确保软件代码的质量、可维护性和可读性。代码审查规范是指在代码审查过程中需要遵守的一系列规则和标准,以确保代码审查的效率和效果。 代码审查...

    Java代码审查工具

    Java代码审查工具是提高软件质量和团队协作效率的重要手段。代码评审是一种系统性的源代码检查过程,旨在确保代码符合编程标准,减少错误,提高可维护性和可读性,同时也能促进团队成员之间的知识共享。在这个过程中...

    一个简单的C#代码审查表

    C#代码审查表 C#代码审查表是对C#代码的检查和评估,以确保代码的质量、可靠性和可维护性。以下是C#代码审查表的重要检查项: 命名检查: * 是否采用 Pascal Casing + Camel Casing 规范? * 布尔型属性名称前缀...

    静态测试-代码审查

    "静态测试-代码审查" 代码审查是静态测试的一种重要方法,它通过对代码的检查和评估来发现和修复错误。代码审查的测试内容包括检查代码与设计的一致性、代码对标准的遵循、代码的逻辑表达的正确性、代码结构的合理...

    静态测试方法之代码审查(CodeReview)的清单

    下面列出的这些要点因该可以作为大部分代码审查的指导,如果是Java应用的话,这些建议应该被视作最佳实践。  代码审查可以帮助提高代码质量,避免由于代码习惯而造成的bug。下面列出的这些要点因该可以作为大部分...

    基于Gitlab的代码审查流程(Code-Review)方案

    代码审查是软件开发中一个至关重要的环节,它涉及对源代码的详细检查,以确保代码符合项目的编码标准和质量要求。代码审查可以借助不同的工具和平台进行,包括GitHub的Pull-Request机制和GitLab的Merge-Request机制...

    java代码审查V1.0.doc

    通过对Java代码审查的详细分析,我们可以看到该过程不仅有助于发现代码中的问题,还能够提升代码的整体质量和可维护性。通过遵循上述流程和检查表,开发者可以有效地减少bug的数量,提高软件产品的稳定性和可靠性。...

    java代码审查.pdf

    在详细说明【标题】及【描述】中的知识点之前,需要明确这两个字段提供的是文件名和文件内容的描述,它们分别指出了文档的主题是关于Java代码审查的PDF文档,以及文档内容涉及到了Java编程语言中的代码审查技巧、bug...

    java代码审查规范文档

    Code Review是一种用来确认方案设计和代码实现的质量保证机制,通过这个机制我们可以对代码、测试过程和注释进行检查。 Code Review主要用来在软件工程过程中改进代码质量,通过Code Review可以达到如下目的: .在...

    代码审查单

    代码审查单是通用代码审查,用于代码审查,以及做代码参考文档便于学习。下面是代码审查单的详细知识点: 数据引用错误 * 是否引用了未初始化的变量? * 数组和字符串的下标是整数值吗?下标总是在数组和字符串...

    CC++代码审查表

    5. 一行代码应只做一件事情,以增强代码的可维护性和理解性。 6. 控制流语句如if、for、while、do应自占一行,并在有多条语句时使用花括号括起。 7. 定义变量时,指针和引用符号(*和&)应紧邻变量名。 三、注释 1. ...

    轻量级代码审查工具 JavaViwer1.0说明书

    JavaViewer 1.0 是一款专为Java源代码审查设计的轻量级工具,旨在提高代码审查效率并降低审查成本。这款工具集成了多种功能,为开发者提供了全面、高效的代码检查环境。 一、软件特点 JavaViewer 1.0 的主要特点...

    代码审查技术

    代码审查技术

    如何执行Java代码审查

    Java 代码审查清单 一、代码整洁清单项分类 1. 使用有意义的名称:变量、函数和类名应该能够表达实际意图,使用描述性名称,避免使用单个字符或缩写。 2. 函数只做一件事:函数应该只有一个明确的任务,避免函数过...

    GitLab和代码审查使用文档

    GitLab和代码审查使用文档 本文档将带领读者了解 GitLab 和代码审查的使用方法,涵盖 Git 的基础知识、GitLab 使用规范、插件集成和代码审查流程。 一、 Git 基础知识 1. Git 概念:Git 是一种分布式版本控制系统...

    Coding Review Checklist(代码审查清单).pdf

    ### 代码审查清单详解 #### 一、背景与目的 在软件开发过程中,代码审查是一项至关重要的活动。通过审查代码,不仅可以确保代码的质量,还能帮助团队成员之间共享知识,提高整体的技术水平。本文将根据“Coding ...

    软件工程中的代码规范与代码审查.pptx

    软件工程中的代码规范与代码审查 软件工程中的代码规范与代码审查是软件开发的重要组成部分。代码规范是指在软件开发中遵循的一致的编程风格和约定,以提高代码的可读性和可维护性。代码审查是指通过人工检查代码,...

Global site tag (gtag.js) - Google Analytics