标准代码审查包含什么?


19

在我的公司中,这是一封电子邮件,讨论编写代码的人所实现的功能和修复的错误。收到邮件的审阅者将审阅代码并讨论其质量以及如何根据他的意见编辑代码。标准代码审查包含什么?


10
显然,在这里,我们没有时间进行代码审查,但是有很多时间来处理由此产生的问题。我希望我在开玩笑。
MetalMikester,2011年

Answers:


12

以我的经验,大多数正式的代码审查都很容易进行样式检查。即使您提供了要检查的事物的清单,眼睛也很容易开始溜溜。

我发现单元测试复习可以带来更多好处。与我合作过的大多数开发人员并不真正知道如何正确进行单元测试,一旦他们获得了“ Aha!”。此刻,他们的其余代码也开始改进。这是一个提示:如果您需要用户检查某些内容,则不是单元测试,如果您只是启动要在调试器中运行的内容,则不是单元测试。


大声笑,必须对单元测试有充分的了解。好消息是测试只是常识-比说出来需要更少的时间来弄清楚……学习一种新语言所花费的时间。
工作

当缺乏单元测试覆盖率时,我发现自己在挑剔。当我在代码审查中看到单元测试时,这就是我所关注的地方。如果我看到单元测试达到业务需求和合理的边缘情况(在适当的地方检查是否为空,对值范围进行边界测试),那么我倾向于不挑剔---这并不意味着您应该选择小事情。仅仅是“证明在布丁中”。很难通过结构良好的单元测试。
Greg Burghardt

6

它往往根据问题所在而有所不同。很多时候,这是一个简单的橡皮图章。“问题出在这里,在这里看这行,很明显出了问题,这是我修复的地方。” “是的,这很明显。继续检查一下。”

但是,当发生更多涉及的事情时,通常是这样的:

  • 在TortoiseSVN上运行“检查修改”,并获取已更改文件的列表。
  • 带审稿人到您的办公室。
  • 解释问题,并打开漏洞跟踪系统的CR以供参考。
  • 在TortoiseSVN中的文件列表下方,在BeyondCompare中打开每个文件以查看更改。
  • 如果审阅者不了解所做的更改,请说明您做了什么以及原因。
  • 审阅者可能会发现看起来不太好的东西。如果是这样,请进行讨论,直到您就是否应该更改它达成协议为止。(如果需要进行简单的更改,您甚至可以在BeyondCompare内编辑文件。)
  • 如果进行了任何更改,请重新编译并确保它可以生成!
  • 运行该程序,以向审阅者证明您的修复程序确实有效。
  • 签入。

4

IMO,代码审查与功能或错误无关,而是专注于代码的质量和为此编写的测试。

因此,在任何情况下,您都坐在同伴旁边,让他解释代码,或者接受代码并仔细检查。

当每个人都按照相同的标准进行编程时,以及如果您使用fxCop之类的工具来自动化部分过程时,它确实会有所帮助。


2

我更喜欢代码审查,开发人员与审查者坐在一起,并逐行解释代码。通常,开发人员在做出解释者可能还没有看到的解释时会遇到问题,这就是为什么这是我的偏爱。我也进行代码审查,将代码发送给我并自己阅读并发表评论,但我发现这些过程往往会花费更长的时间(我审查并起草评论,然后发送给阅读并使用WTF的开发人员,她是说并发电子邮件吗?我回去,我解释了,两三轮后我们聚在一起,我在屏幕上指出了我的意思,开发人员说:“哦,是的,现在我明白了。”)由于缺乏真正的讨论,所以效率较低还有,“您做错了。”

在代码审查中强制执行标准,但不要使标准成为唯一重点也很关键。

但是,只有在代码审阅者满意或经理(而非开发人员)推翻他或她(代码审阅者也犯错)之后,代码才被发送到生产环境。这很关键,或者代码审查只是一个官僚程序,没有附加值,除非代码审查者必须在最终代码提交之前批准最终代码。


我总是建议让开发人员根据他的评论反馈来做。审稿人不一定最了解,当强制协议时,您可能需要花费大量时间来教育审稿人。不过,我会考虑由高级/首席开发人员进行的最终“集成”检查。
Joppe

0

首先,您需要拥有编码标准,而不仅仅是语法。当人们开始在您的公司工作时,他们必须在开始编码之前尽可能多地学习您公司的准则。如果在审查过程中发现各种违规行为,则很可能会:

  • 由于时间限制,无法固定
  • 发现比准则值得的东西更烦人

该准则应该有意义,并且应该有适当的工具来查找违规并尽可能容易地进行重构。始终查看准则的目标和代码审查

我的目标是使代码尽可能统一,并发现可维护性和可读性方面的问题。第二个目标是使更多的人熟悉特定的软件。

我认为这些指导方针可能存在于:

  • 通用语法和编码准则(选择一个已存在的语法并使用自动检查的工具)
  • 适当的异常处理
  • 正确记录
  • 充分利用语言范例(OOID为SOLID)
  • 组件之间的依赖性明显且经过深思熟虑(使用诸如NDepend之类的工具)
  • 工作构建脚本
  • 存在文档(开发人员启动,安装手册)
  • 内部库要使用
  • 公司政策
  • 不允许的第三方工具
  • 单元测试存在且不失败
  • 90%的代码覆盖率
  • ...

有了适当的代码检查,就可以根据指南检查软件,并且:

  • 与程序员讨论违规
  • 解决不必要的违规
  • 评论必要的违规行为
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.