代码审查:究竟是好主意还是坏主意?

2024-04-11 18:32

本文主要是介绍代码审查:究竟是好主意还是坏主意?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

摘要:代码审查的好处是能够帮你查找Bug以及发现错误,开发者们分享各自领域里的知识有助于提升质量标准,还能提供指导与学习加强团队建设的能力。缺点是代码审查可能会导致团队之间相互怨恨、内部分裂,破坏上下级之间的关系。

代码审查在软件开发中是老生常谈的话题。很多人都认为代码审查的花销大而且又耗时,特别是当大家忙完软件项目又把它送去软件测试部门时,对一些开发人员来说,它更会引发更多的办公室政治和流言蜚语。

一次代码审查可能会使代码逐渐得到改进,如果你认为从有效的代码审查中只是稍微改进了一下软件那就错了。开发人员若得知他们的代码会被评估会更加努力工作。因此,代码审查有利于导师制度,程序员们会学到更多,代码审查还能激发团队凝聚力。

代码审查优点:

在老板看来,代码审查是个不错的好方法,某些部门甚至将同行代码审查作为主要进程中的一部分。

  1. 代码审查能够帮你查找Bug以及发现错误;
  2. 开发者们分享各自领域里的知识有助于提升质量标准;
  3. 代码审查提供指导与学习;
  4. 加强团队建设的能力。

既然有如此多的优点,那为何会有不少开发者拒绝做代码审查呢?文化问题或许已成为一种巨大的障碍,大部分开发者会厌恶代码审查是因为他们无法忘记那些痛苦的审查会议,更槽糕的是,他们害怕因劣质代码而遭到管理者的批评与指责。

代码审查缺点:

  1. 代码审查也可能导致团队之间相互怨恨、内部分裂;
  2. 审查者提供代码虚假信息;
  3. 开发者们宣称个人的编码标准;
  4. 代码审查是个苦差事,会破坏上下级之间的关系。

也许代码审查最大障碍是恐惧,开发者担心错过最后期限,害怕分心,害怕投入过多时间。

对于任何既定的团队,代码审查的有效性介于两者之间——友好的银弹或者团队的杀手锏。当然,这还取决于你的团队是否愿意积极拥抱代码审查工作,任何一款开发工具,仅使用它还是不够的,前提是你必须确保以正确的方式在使用。这里作者将分享高效代码审查的十个经验:1.代码审查要求团队有良好的文化;2.谨慎的使用审查中问题的发现率作为考评标准;3.控制每次审查的代码数量;4.带着问题去进行审查;5.所有的问题和修改,必须由原作者进行确认;6.利用代码审查激活个体“能动性”;7.在非正式,轻松的环境下进行代码审查;8.提交代码前自我审查,添加对代码的说明;9.实现中记录笔记可以很好的提高问题发现率;10.使用好的工具进行轻量级的代码审查。

经过几番讨论与思考,我认为代码审查成功的关键要素在于信任和培训。主要体现在:

  • 团队成员必须坚信,代码审查的反馈并不是人身攻击或者怀疑开发者的能力;
  • 审查者要相信,如果提供改进建议,被审查者不会痛恨他们;
  • 团队应该把查看代码审查当做建设性的反馈意见,而不是给队友进行分级或是批评。

当然,不可避免的是,团队中也不完全存在信任感。倘若有了正确的代码审查培训就可以帮助建立团队间的相互信任。现在你也可以给其他人进行代码审查,在代码审查时留下备注信息;指导新的开发者如何给予适当的反馈意见,比如向有经验的开发者学习,他们可以提供更多有价值的信息;团队领导者从审查中进行备份并不断完善加强团队间的信任与尊重。

总结:

我认为,代码审查更重要的是一种技术分享或者代码共享。在审查过程中,通过被审查者的讲解、审查人员的质询来发现问题并传播知识。如果认真审查过代码至少可以让审查者在一定程度上知道自己的同时在做什么、做的怎么样,而且,如果审查者做过相关东西并且有更好的解决方案,能够提出来也可以做到一定的技术分享。同时被审查者如果被审查问题较多,也可以在一定程度上提高对技术的追求。

 

这篇关于代码审查:究竟是好主意还是坏主意?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/894848

相关文章

uniapp接入微信小程序原生代码配置方案(优化版)

uniapp项目需要把微信小程序原生语法的功能代码嵌套过来,无需把原生代码转换为uniapp,可以配置拷贝的方式集成过来 1、拷贝代码包到src目录 2、vue.config.js中配置原生代码包直接拷贝到编译目录中 3、pages.json中配置分包目录,原生入口组件的路径 4、manifest.json中配置分包,使用原生组件 5、需要把原生代码包里的页面修改成组件的方

公共筛选组件(二次封装antd)支持代码提示

如果项目是基于antd组件库为基础搭建,可使用此公共筛选组件 使用到的库 npm i antdnpm i lodash-esnpm i @types/lodash-es -D /components/CommonSearch index.tsx import React from 'react';import { Button, Card, Form } from 'antd'

17.用300行代码手写初体验Spring V1.0版本

1.1.课程目标 1、了解看源码最有效的方式,先猜测后验证,不要一开始就去调试代码。 2、浓缩就是精华,用 300行最简洁的代码 提炼Spring的基本设计思想。 3、掌握Spring框架的基本脉络。 1.2.内容定位 1、 具有1年以上的SpringMVC使用经验。 2、 希望深入了解Spring源码的人群,对 Spring有一个整体的宏观感受。 3、 全程手写实现SpringM

代码随想录算法训练营:12/60

非科班学习算法day12 | LeetCode150:逆波兰表达式 ,Leetcode239: 滑动窗口最大值  目录 介绍 一、基础概念补充: 1.c++字符串转为数字 1. std::stoi, std::stol, std::stoll, std::stoul, std::stoull(最常用) 2. std::stringstream 3. std::atoi, std

记录AS混淆代码模板

开启混淆得先在build.gradle文件中把 minifyEnabled false改成true,以及shrinkResources true//去除无用的resource文件 这些是写在proguard-rules.pro文件内的 指定代码的压缩级别 -optimizationpasses 5 包明不混合大小写 -dontusemixedcaseclassnames 不去忽略非公共

麻了!一觉醒来,代码全挂了。。

作为⼀名程序员,相信大家平时都有代码托管的需求。 相信有不少同学或者团队都习惯把自己的代码托管到GitHub平台上。 但是GitHub大家知道,经常在访问速度这方面并不是很快,有时候因为网络问题甚至根本连网站都打不开了,所以导致使用体验并不友好。 经常一觉醒来,居然发现我竟然看不到我自己上传的代码了。。 那在国内,除了GitHub,另外还有一个比较常用的Gitee平台也可以用于

众所周知,配置即代码≠基础设置即代码

​前段时间翻到几条留言,问: “配置即代码和基础设施即代码一样吗?” “配置即代码是什么?怎么都是基础设施即代码?” 我们都是知道,DevOp的快速发展,让服务器管理与配置的时间大大减少,配置即代码和基础设施即代码作为DevOps的重要实践,在其中起到了关键性作用。 不少人将二者看作是一件事,配置即大代码是关于管理特定的应用程序配置设置本身,而基础设施即代码更关注的是部署支持应用程序环境所需的

53、Flink Interval Join 代码示例

1、概述 interval Join 默认会根据 keyBy 的条件进行 Join 此时为 Inner Join; interval Join 算子的水位线会取两条流中水位线的最小值; interval Join 迟到数据的判定是以 interval Join 算子的水位线为基准; interval Join 可以分别输出两条流中迟到的数据-[sideOutputLeftLateData,

Git代码管理的常用操作

在VS022中,Git的管理要先建立本地或远程仓库,然后commit到本地,最后push到远程代码库。 或者不建立本地的情况,直接拉取已有的远程代码。 Git是一个分布式版本控制系统,用于跟踪和管理文件的变化。它可以记录文件的修改历史,并且可以轻松地回滚到任何历史版本。 Git的基本概念包括: 仓库(Repository):Git使用仓库来存储文件的版本历史。一个仓库可以包含多个文件

HTML文档插入JS代码的几种方法

在HTML文档里嵌入客户端JavaScript代码有4中方法: 1.内联,放置在< script>和标签对之间。 2.放置在由< script>标签的src属性指定的外部文件中。 3.放置在HTML事件处理程序中,该事件处理程序由onclick或onmouseover这样的HTML属性值指定。 4.放在一个URL里,这个URL使用特殊的“javascript:”协议。 在JS编程中,主张