美国上市公司,专注Java培训21年

我们要在代码审查中寻找什么?达内java培训为你解答!


我们要在代码审查中寻找什么?达内java培训为你解答!

让我们讨论一下代码审查。如果你花费几秒钟来搜索代码审查的信息,你会看到很多类似于“为什么代码审查是一个好东西”这样的文章。你也会看到很多文件如何使用像Upsource这样的代码审查工具。

但是你没有看到一个规范指导性的东西当你在审查别人的代码时。

大概没有文章能把这些方方面面的东西全都讲出来:例如很多不同的方面需要考虑,任何功能性非功能性的条件,不同的组织在每个方面不同的有限级别。

这是一个很大的话题,本文的目是论述一些观点,当你在执行代码审查时可以去看看,然后决定每一个方面的优先级别,检查它们的一致性。这对一篇文章来讲是一个相当复杂的主题。

当你回顾别人的代码时,你会寻找什么?

不管是使用代码审查工具或者在你同事演练他们代码期间,无论什么情况,有些方面很容易去评论。例如:

格式:空格和行符在哪里?它们是用制表符还是空格?大括号是如何布置的?

样式:作为final的变量/参数吗?方法变量的定义是接近于他们使用的代码还是在方法的开始?

命名:做场/常/变量/参数/类名称符合标准?这些名字太短了吗?

测试覆盖率:有此代码的测试吗?

这些都是有效的检查,你可以在不同的代码区域之间切换来减少认知负荷,从而更符合你的代码看起来更好。

达内java培训专家为你解答!

你应该寻找什么?

哪种事情对人类来讲是值得的?我们可以在代码审查中发现,我们不能把事情委托给一个工具?

这有数量惊人的东西。这肯定不是一个详尽的清单,我们也不会去伟大的这里详细介绍他们中的任何一个。相反,这应该是你的组织中关于如何在代码审查中寻找东西这样一个对话的开始。

设计

新代码如何适合整体架构?

代码是否遵循扎实的原则,领域驱动的设计和/或其他设计范例团队的青睐?

新代码中使用了哪些设计模式?这些是否合适?

如果代码有一个混合的标准或设计风格,这种新的代码是否遵循目前的做法?代码是否按照正确的方向迁移,或者是否遵循了由于被淘汰的旧代码的示例?

代码在正确的地方?例如,如果代码是与订单相关的,则是以订单服务吗?

新代码可以在已有的代码中重复使用一些东西吗?新的代码是否提供了在现有代码中可以重用的东西?新的代码是否引入重复?如果是这样的话,它应该被重构为一个可重复使用的模式,这是可以接受的在这个阶段?

代码是工程设计的吗?它是否建立了不需要现在的可重用性?团队如何平衡重构和YAGNI的关系?

可读性和可维护性

这些名字(字段,变量,参数,方法和类)实际上反映了他们所代表的东西吗?

我能够读懂这些代码吗?

我能理解测试吗?

测试是否覆盖了一个很好的子集?他们是否包括常规和特殊情况?是否有没考虑到的情况?

异常错误消息可以理解吗?

功能性

代码是否达到了它的期望值?如果有自动测试能确保代码的正确性,那这个测试真的能测试出代码符合要求吗?

代码是否看起来像是一个如使用错误的变量的检查或不小心的细微的bug?

你有没有想过…?

是否存在潜在安全问题的代码?

是否有需要满足的监管要求?

对于不包括自动化性能测试的领域,新的代码是否会引入可避免的性能问题,如不必要的调用数据库或远程服务?

是否需要创建公共文档,或者修改现有的帮助文件?

是否有面向用户的消息被检查正确性?

是否有明显的错误需要停止这一工作的生产?代码要在测试数据库是否不小心,或者是有一个硬编码的存根需要替换成一个真正的服务?


【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,如涉及作品内容、版权和其它问题,请在30日内与我们联系,我们会予以重改或删除相关文章,以保证您的权益!

Java开发高端课程免费试学

大咖讲师+项目实战全面提升你的职场竞争力

  • 海量实战教程
  • 1V1答疑解惑
  • 行业动态分析
  • 大神学习路径图

相关推荐

更多
  • Java开发中的 WebSocket是什么?
    Java开发中的 WebSocket是什么?
    Java开发中的 WebSocket是什么?WebSocket允许服务器「主动」给浏览器发消息,如教程演示截图,服务器会主动推送比特币价格给浏览器。 详情>>

    2018-12-06

  • 为什么很少见高薪程序员炫富?
    为什么很少见高薪程序员炫富?
    为什么很少见高薪程序员炫富?大概可能程序员仍然在继续敲代码~加班加班!!虽然程序员的收入相对较高,但是在以上一线城市,面对更高的房价和物价,程序员的工资也要承受不小的压力。 详情>>

    2018-10-15

  • IT技术那么多,为什么要选择学java开发?
  • Java微框架:不可忽视的新趋势
  • Java开班时间

    收起