审查元素为什么看不见代码

许多组织的开发人员都将代码审查作为他们的核心实践之一。 尽管这听起来很合理,但是随着时间的流逝,导致采用该实践的目标被遗忘了,唯一剩下的就是实践本身的盲目应用。

为什么我们需要代码审查?

保持质量。 传播知识。 避免在生产中出现严重的错误。 保持软件设计和体系结构的一致性。 毫无疑问,所有非常有说服力和合乎逻辑的答案都是如此,但是如果这些目标是,代码审查是否是实现这些目标的最有效方法?

如果不深入了解应用代码的上下文,就很难讨论像代码审查这样的实践。 多久完成一次? 代码合并之前还是之后? 有多少人参与? 团队规模是多少? 您有分散的团队吗? 被检查代码的平均大小是多少? 几节课,每节几行或几节课,每节几百行? 代码是仅与一小部分域相关,还是涉及应用程序的多个区域? 人们是否有权拒绝正在审查的代码? 有多少人拥有这种力量? 团队负责人? 建筑师? 整个团队,包括初级开发人员? 拒绝代码会怎样? 代码库是由同一个组织的开发人员更改的,还是一个开源项目,可以接受来自世界各地的开发人员的贡献,他们彼此不认识,并且对更改的责任不高? 您在代码审查中寻找什么? 寻找错误? 缺乏一致性? 小细节,例如变量名? 大的建筑违规? 是否符合非功能性要求? 设计不好? 团队是否同意不良/良好设计意味着什么?

为了确定代码审查(及其完成方式)是否实际上是实现我们目标的最佳方法,知道这些问题的答案非常重要。

代码审查很痛苦

好吧,代码审查是一种习惯,如果被审查的代码完全烂了,也不能怪。 如果您选择在合并后几周内检查大量代码,则不能责怪代码检查。 可能痛苦的是您决定进行代码审查的方式,而不是实践本身。

什么时候以及为什么使用代码审查?

  • 在将其合并到生产中之前:我们与成对工作,并且使用非常短暂的小分支(大约2个小时的编码,很少更改类)。 两对提出拉取请求(平均每天2到5次),另一对则检查其代码。 由于我们的工作量很小,因此,尽管经常进行评论,却非常容易快捷。 代码很少被拒绝,如果被拒绝,则很容易快速修复。 这样,我们避免了很多返工,并减少了积累技术债务的机会。
  • 传播知识并避免不必要的工作:让成对的人互相检查代码有助于传播对系统不同部分的知识,还可以避免某些成对的人从事不必要的工作。
  • 在面试过程中检查提交的代码:代码不说谎。 个人简历可以。 在面试过程的第一阶段,我们要求候选人提交代码分配。 然后,我们对其进行审查,并向他们提供全面的反馈。 这是我们有机会根据其作为开发人员的基本技能来准确评估候选人的位置。
  • 指导学徒:我们的工匠会定期审查他们的学徒开发的所有服装和宠物项目。 我们发现代码审查是一种极有价值的教学技术,因为学徒首先尝试尽其所能来解决练习,然后向他们展示更好的练习方法(如果有的话)。
  • 回顾不同的方法/实验:有时我们在编写代码的方式上并不容易达成共识。 发生这种情况时,我们通常会单独进行一些工作以进行实验,然后让团队的其他成员来检查代码。 与具体的辩论相比,与无休止的“但是,如果……”问题进行无聊的对话要容易得多。

什么时候不使用代码审查?

  • 验证是否存在错误:我发现这毫无意义。 我们对此进行了测试。 仅在所有测试通过之后,才对代码进行审查。 测试是代码审查的一部分。
  • 在代码合并到生产中之后:为时已晚。 如果发现代码不够好怎么办? 如果代码已经编写,可以运行,正在生产中,并且不会在短期内更改,那么为什么要对其进行检查和更改? 如果我需要进行修改,我将等待更改。
  • 当要检查的代码太大时:审查大的更改既痛苦又不礼貌。 在上一家公司中,我们决定以团队的形式拒绝大的更改。 这对开发人员需要将这些更改分解为较小的更改,然后一点一点地提交,以便审阅者可以理解。 那也用来教他们一堂课。 只有少量提交会被审核并合并到生产中。 期。
  • 检查代码标准:我通常使用Java,并且我们在构建期间会执行许多静态分析工具。 如果代码不符合这些工具中定义的最低质量要求,则构建将失败。 如果分支构建失败,则不会检查任何代码。

在其他情况下,我会或不会使用代码审查,但这是最重要的情况。

结对编程与代码审查

当您以较小的增量,成对工作并不断轮换工作时,执行代码审查既快速又便宜。 随着领域和技术知识在团队中的快速传播,代码审查实际上已成为一种知识共享的机制,而不是真正的质量门。 配对为我们提供了更快的反馈循环,并有助于最大程度地减少许多错误。 根据我们的经验,与由单个开发人员编写的代码相比,一对编写的代码在代码审查中被接受的机会要高得多。

结论

如果我们拥有良好的团队文化,则可以避免在代码审查期间出现许多问题。 没有目标的实践是没有意义的。 在选择一种练习之前,请先弄清楚您要实现的目标,然后再选择可以帮助您的练习。 不能盲目采用惯例。 为了使它们起作用,您需要具有正确的上下文和思维方式。 否则,您将冒因自己的缺陷而指责这些做法的风险。

翻译自: https://www.javacodegeeks.com/2015/09/code-review-why-are-we-doing-it.html

审查元素为什么看不见代码

审查元素为什么看不见代码_代码审查:我们为什么这样做?相关推荐

  1. 防止html网页被f12抓取,JS禁止浏览器右键查看元素或按F12审查元素自动关闭页面示例代码...

    前言 很多站长为了仿止别人仿制或扒下自己的网页,都会选择使用禁止浏览器右键查看元素或F12审查元素,一旦查看元素浏览器页面就会自动关闭,下面话不多说了,来一起看看详细的介绍吧. 注:该代码不兼容火狐浏 ...

  2. 手机如何看python代码_用手机运行Python代码

    前言 在手机上运行Python需要用一个软件,叫QPython3L,当然还有别的软件也是可以运行Python的,不过我认为QPython3L是其中相对较好的一个. 首先声明一下,我也只是会简单的使用 ...

  3. java学到能看懂代码_一篇文章能够看懂基础源代码之JAVA篇

    一篇文章能够看懂基础源代码之JAVA篇 发布时间:2020-05-19 11:20:32 来源:51CTO 阅读:305 作者:栖木之地 java程序开发使用的工具类包:JDK(java develo ...

  4. python看不懂代码_爬虫参考,看不懂呀。

    [python]代码库def get_label(name): if name in cats: return cats[name] return u'其它' def get_label_by_crc ...

  5. php屏蔽审查元素,HTML网站右键禁用F12代码 屏蔽审查元素 防止修改页面代码

    function click(e) { if (document.all) { if (event.button==2||event.button==3) { alert("欢迎光临寒舍,有 ...

  6. HTML网站右键禁用F12代码 屏蔽审查元素 防止修改页面代码

    <script>//禁止右键 function click(e) { if (document.all) { if (event.button==2||event.button==3) { ...

  7. mysql打字看不见鼠标_电脑打字不显示怎么办?键盘不能打字不能正常输入怎么办?...

    有时候我们电脑如果感染病毒的话可能会影响我们的键盘不能使用,导致键盘不能输入密码,不能打字,但是自己的键盘又没有坏,下面小编就为大家分析下解决办法, 1.点击打开桌面开始菜单,找打运行选项打开,在弹出 ...

  8. python有什么好玩的代码_可以用 Python 编程语言做哪些神奇好玩的事情?

    Python作为一种应用极为广泛的语言,几乎在任何领域都能派上用场.想做Web有Flask/Django/Tornado:想做分布式有Celery:想做手机App有Kivy:想做数据分析有Pandas ...

  9. python推箱子游戏代码_用python入门知识做推箱子游戏,若能打过第三关,则可以学会编程...

    不得不说,Python小游戏是最适合入门编程的项目,因为太简单! 无论懂或完全不懂python,这样的小游戏,你都可以直接开发出来,原因很简单: 在详细教程里,会有从零基础开始,一步一步的教你完成这个 ...

最新文章

  1. 计算机视觉:卷积神经网络基础
  2. Hazelcast入门指南第5部分
  3. Hibernate中主键生成策略
  4. Functional Interface JDK1.8
  5. 使用 custom element 创建自定义元素
  6. mysql创建数据库与表_PHP MySQL 创建数据库和表 之 Create
  7. 使用opensocial接入social game
  8. 大数据之_Hadoop工作笔记002---SpringBoot连接Hadoop HDFS进行创建文件夹,添加上传文件,删除文件,下载文件操作
  9. 【论文写作】毕业论文写作套路之正文(2)
  10. python_三目运算
  11. (十四)三次样条插值
  12. 鲁宾逊微积分是什么?
  13. excel利用vba批量生成word报告
  14. 任意文件包含漏洞原理解析及演示
  15. Mybatis-四大神兽
  16. 特斯拉model3中控屏怎么关_特斯拉Model 3为什么取消仪表盘? - 全文
  17. 服务器提取数据库信息,服务器自动提取数据库
  18. 3蛋白wb_有这3个工具!蛋白实验不愁!
  19. Excel2016 无法粘贴图片
  20. 想要选好群控系统! 还要先了解的群控发展史

热门文章

  1. Matplotlib绘制三维数据点与线
  2. Python中的进程池
  3. python人物关系可视化百年孤独_利用python对《乘风破浪的姐姐》可视化
  4. linux grep 和 find 命令
  5. 冒泡排序图解-Java实现
  6. 使用jol如何判断一个对象当前处于哪种锁
  7. 关于主从复制的超详细解析(全)
  8. matlab图像处理英文文献,数字图像处理英文文献翻译参考.doc
  9. 2021nian开源SLAM 算法
  10. 71-项目的广告管理模块和用户管理模块