关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » 程序人生 »代码审查的重要性

    代码审查的重要性

    2015-06-06 00:00:00 出处:ITJS
    分享

    前些天有人写了一篇超精彩的博客贴子,是关于之所以要将优秀的程序员从平庸的群体中挑选出来的重要性。该文写得真的很好,因为它讲述的情况和产生的可怕后果,在我的职业生涯中我已经见得太多太多了,不过这其实是很容易阻止的。

    作者讲述了这样一种现实情况——一家公司需要实施某个非常重要的模块,但是此时它的高级开发人员Mr Senior很忙。因此,他们将模块给了新手Mr Newbie——他花了4个月来写模块,两个星期的时间来修复QA发现的大量bug,浪费了技术支持无数个小时用于揪出QA没有发现的bug,甚至导致客户以软件满是bug为由取消了合同,等等。最终,高级程序员站出来,用了一个月的时间从头重写,然后在经过QA快速的检查之后,一个几乎没有bug的版面世了,所有人都很满意。

    结局很圆满,没错,但是不知道你看出来没有,其实所有的问题本来都是可以避免的,只要这家公司能够在日常研发中引入代码审查程序。

    现在,在我解释如何避免这些问题之前,我想先描述一下我认为一个好的代码审查程序应该是什么样的。所有它需要做的就是遵循以下两个简单的原则:

    没有经过审查的代码不入主分支。哪怕是一行提交,哪怕是最高级开发人员写的代码,都不能例外。 每个人都可以审查代码。即使是最初级的程序员,也可以参与进来。

    这两个原则貌似有违直觉。你或许要问了:“为什么不能相信高级程序员编写的高质量代码?”又或是,“如何相信新手程序员审查后的代码确保是OK的?”

    第一个问题其实是不应该问的,因为即使是最资深最高级的开发人员也会时不时地犯错。虽然手工的代码审查永远不可能像自动化测试和脚本化的手动QA那样严谨,但是代码审查执行所需的时间更短,并且很容易发现自动化测试理解不了的问题——通常是位于架构层面的问题——这要是拖到以后修复就会变得很难很难。

    至于第二个你不信任新手程序员的问题——答案很简单。多一双眼睛来检查代码总是令人喜闻乐见的,但这也不是主要原因。我们真正想要实现的目的是提高初级程序员的技能。在审查时,他可以知道这些高级开发人员是如何编写代码的。最重要的是,这将有助于他理解如何批判性地阅读别人的代码,一两个月后,他甚至能够审查自己的代码,从而提高了他最终提交到存储库中的代码质量。

    现在让我们回过头去再看前面作者提到的案例,我们可以发现,要是Mr Newbie写的代码能够拿给Mr Senior去审查,那么他很多初始的错误在他第一次提交时就会被发现,甚至他还可以向Mr Senior请教和讨论模块,从而创造出一个更好的架构,也许都不用像原来那样花上4个月的时间就可以完成任务。此外,Mr Newbie由于知道需要经过高级开发人员的眼睛,因而在写代码时会严格要求自己,用批判的眼光看自己的代码。而最重要的好处是,整个过程会教会Mr Newbie很多关于Mr Senior思考的方法,也许等到构建下一个模块时,他已经成为了Mr Intermediate(中级开发人员)。

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    Cloudflare 收购了 Human Native, 推动AI 数据市场发展

    数据泄露?半导体光刻设备巨头ASML官方否认被黑客攻击

    2025年全球半导体市场排名揭晓,英伟达遥遥领先

    全球最大资管贝莱德展望2026:看衰美国经济,看好加密货币,认为AI继续主导市场

    每位求职者面试时都应准备好回答的AI问题

    曾经风靡全球的扫地机器人“鼻祖” iRobot 倒闭

    摩根大通第四季度展望背景:驾驭人工智能驱动的增长、监管风险与市场分歧预测

    SIOS 发布 LifeKeeper v10 ,引入网页版统一控制台

    2026年1月1日起,这些新法新规正式施行,对我们的生活和工作有直接影响

    云存储公司 Wasabi 推出 Covert Copy隐蔽复制功能,防勒索软件储存解决方案

    IT头条

    马斯克2026最新采访总结:2040年,全球机器人数量将突破100亿台

    23:52

    专家解读|规范人工智能前沿业态健康发展的新探索:解读《人工智能拟人化互动服务管理暂行办法》

    00:54

    用至强 6高存力搞定MoE卸载!

    17:53

    美国将允许英伟达向中国“经批准的客户”出售H200 GPU

    02:08

    苹果与微信就15%手续费达成一致?腾讯未置可否

    22:00

    技术分享

    PHP 和 Node.js 的10项对比挑战

    Javascript闭包深入解析及实现方法

    windows 7、windows 8.1手动增加右键菜单功能技巧

    MYSQL出错代码大汇总

    windows 7假死机怎么办 windows 7系统假死机的原因以及解决方法

    Ubuntu(Linux)下配置IP地址的方法

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。