代码走查和代码审查_21世纪的代码审查

2023-10-31

代码走查和代码审查

有句老话说:“不要谈论宗教或政治”。 为什么? 因为这些主题充满了强烈的见解,但客观答案却很薄弱。 一个人的确定性就是另一个人的怀疑。 别人的常识只是对那些持不同看法的人的先验偏见。 可悲的是,与这些有争议的主题进行对话会产生比光更多的热量。

人们常常会伤透脑筋,以至于他们忘记了“ 讨论 ”的结果与他们的预期寿命,薪水,赢得x因子的机会,获得梦想的日期,赢得彩票,寻找机会无关。应对气候变化或他们认为重要的一切!

同样,在软件工程世界中,代码审查可能最终导致毫无意义的冲突。 开发人员可以为愚蠢的小事情争吵,互相冒犯,并且偶尔会捕获到一个可能会在质量检查中发现的错误-即将发生冲突的自由区域

现在不要误会我的意思,有完全正当的理由使您可能认为代码审查对您的项目是个好主意:

  1. 尽早发现错误意味着项目成本降低。 您不必发布修补程序补丁,因为它已处于开发阶段– yippee!
  2. 代码变得更加可维护。 Jonny用宿醉编写的那种疯狂的200行方法已经被抓住,然后才有机会让自己深入到您的代码库中。
  3. 知识遍布您的团队。 不再只有一个人知道的大型代码块。 众所周知,当一个人谈论休假两个月时,每个人都会感到恐慌!
  4. 开发人员付出了更多的努力。 如果开发人员知道其他人将对他的工作做出判断,那么他更有可能使用该行Javadoc来澄清何时将引发异常。
但是,认为代码审查不会引起问题会很天真。 实际上,它们引起了很多21世纪项目无法解决的问题。 我认为它们占有一席之地,但是需要对如何以及何时完成这些方法进行一些思考,以使它们有益而不是麻烦。 这是一些指导原则...
  • 1.永远不要忘记TDD
在要求他人查看代码之前,请确保已测试了代码。 赶上您自己的错误并在其他人之前处理它们。
  • 2.尽可能自动化
有几种非常好的Java工具,例如PMDCheckstyleFindbugs等,当这些工具可以非常快速地识别出人们会浪费时间抱怨的许多事情时,让人们花时间审查代码又有什么意义呢? 我要再说一遍。 当这些工具可以非常Swift地识别出很多人会浪费时间抱怨的事情时,让人们花时间检查代码又有什么意义呢?
使用这些工具时,对它们使用一组通用规则很重要。 这样可以确保您的代码符合某种商定的标准,并且不需要发生在20世纪老式代码审查中曾经发生的大部分事情。 理想情况下,应通过版本控制系统中的钩子在每次代码检入时运行这些工具。 如果代码真的很糟糕–它将被阻止检入。Billy阻止开发人员检入他写的垃圾(当他有致命的偏头痛时),因为他太尴尬而无法查看。 实际上,您正在帮他,而不只是您的团队。
  • 3.尊重设计
在一些早期的Java项目,我的工作的,评论的方式发生为时已晚。 当实际设计存在缺陷时,您正在查看代码。 一种设计模式被误解了,引入了一些讨厌的依赖关系,或者开发人员走得很远。 审查将提出这些观点。 众所周知的反驳是:“ 这是代码审查,而不是设计审查!” 。 随之而来的是一团糟。 为了解决这些问题,我们进行了一些更改,以便要求审查代码的任何人(以某种方式)也将参与设计或设计审查。 实际上,与代码审查相比,我们从设计审查中获得的收益更大。 设计的质量要高得多,后来那些令人讨厌的惊喜停止了。
  • 4.同意样式指南(和字典)
即使使用自动化工具(例如Checkstyle,Findbugs等),也要避免样式上不必要的冲突,您的项目应具有样式指南。 尽可能遵循行业标准的Java约定。 尝试为您的项目引入的所有概念写一本“字典”。 这意味着,当代码引用它们时,更容易检查用法和上下文是否正确。
  • 5.获得正确的工具

如果您所有的开发人员都在使用Eclipse(并且乐于使用它),那么Jupiter之类的东西就有意义。 您可以在代码中进行导航,调试代码,并实质上利用Eclipse IDE所做的一切来使您在查看代码时更轻松地看代码。 但是,如果每个人都不在同一个IDE上(或者IDE不能使您的生活变得更轻松),请考虑使用诸如Review Board之类的东西  

  • 6.记住每个项目都是不同的。

您可能在上一个可行的项目中做了一些工作。 但是请记住,每个项目都是不同的。 另一个项目具有特定的体系结构(可能是高度并发,高度分散的),具有特定的文化(每个人都可能喜欢使用Eclipse),并使用了某些工具( maven或ant )。 新的一个是否打勾相同的框? 请记住,不同的项目适用于不同的项目。

  • 7.记住给予和接受
复习阳性时,要一丝不苟,但不要学究。 琐碎的琐碎事情会使项目失败或使公司损失金钱吗? 可能不是。 透视事物。 记住要对其他想法持开放态度,并且要改变自己的想法,而不是因改变别人的想法而挂断电话。
  • 8.成为伙伴
根据我的经验,我称之为“伙伴审查 ”(别人称之为“ 过肩”)已经工作非常出色。 伙伴审核包括每天或每两天与另一位团队成员非正式会面,并在您的办公桌或他们的办公桌旁快速浏览(5 – 10分钟)彼此的代码。 这种方法意味着:
  1. 问题很早就被发现
  2. 您始终掌握最新情况
  3. 审查总是很短,因为自从上次赶上以来您只在看新代码
  4. 因为环境是非正式的-没有紧张感。 他们很好玩!
  5. 您可以定期交流思想。
当技术负责人时,伙伴检查您的团队成员是查看团队中有人是否早早陷入麻烦的好方法。 您可以同时帮助他人并了解每个人的进度。 并且由于好友评论的定期性质,它们变得习惯并且实际上完成了。 对于其他许多21世纪代码评论,我们不能说!

总而言之,如果您的项目要进行代码审查,那么它们应该快速,有效并且不要浪费时间。 正如本文所讨论的,考虑如何组织它们以确保不会发生是非常重要的

'直到下一次–照顾好自己。

参考:我们的JCG合作伙伴 Alex Staveley在都柏林技术博客上 的21世纪代码审查


翻译自: https://www.javacodegeeks.com/2012/02/code-reviews-in-21st-century.html

代码走查和代码审查

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

代码走查和代码审查_21世纪的代码审查 的相关文章

随机推荐

  • 智商100能看懂,内观,生男生女,集体潜意识及智人2.0

    一 这一轮人类发展趋势从外到内 要内观世界 1 人的身体前面是阴 背后是阳 但人是向前走路的 也就是从阳往阴走的 所以人类发展的趋势是阴 也就是往女性化走 从外到内 要内观世界 从目前人类的文明来说 现在的人类比古代的人类来说 男性越来越向
  • 最新高频Android笔试题分享,最新高频安卓面试题目分享

    前言 伟人曾经说过 书是人类进步的阶梯 书中自有黄金屋 书中自有颜如玉 读书破万卷 下笔如有神 书是唯一不死的东西 书籍是伟大的天才留给人类的遗产 最近有很多朋友在我的公众号上提问 Android开发的经典入门教材和学习路线 Android
  • 基于VLC实现RTSP推流桌面(共享桌面)

    基于VLC实现RTSP推流桌面 共享桌面 一 添加VLC头文件和库文件 二 封装RTSPServer推流类 三 测试代码 不清楚推流大概原理的小伙伴 参考 设置VLC播放器进行RTSP推流桌面 共享桌面 这里以VLC 2 2 6版本为例 因
  • 怎么将pdf文件转换成图片?三种方法

    在实际的工作过程中 PDF是非常常见的文档存储格式 也是很多网站默认的保存格式 对于PDF文件来说 其具备很多其他文件格式没有的优势和特点 例如 在PDF文件中 其排版整齐且固定 浏览直观且方便 为工作的开展提供了诸多便利 另外 为了能够提
  • [计算机网络]简单入门HTTPS : 确保Web网站安全

    前言 今天也是刚好看到HTTPS 感觉HTTPS有许多需要总结的地方 这里也是花点时间给大伙总结下 今天会从下面几个点入手给大伙介绍 HTTPS如何解决现有的HTTP安全问题 和HTTP的区别 HTTPS建立连接的过程 HTTPS的缺点 其
  • android蓝牙BLE(二) —— 通信

    android BLE系列 android蓝牙BLE 一 扫描 android蓝牙BLE 二 通信 android蓝牙BLE 三 广播 一 蓝牙基础协议 想了解蓝牙通信之前 需要先了解蓝牙两个最基本的协议 GAP 和 GATT 1 GAP
  • FreeCAD是什么、如何下载(windows+0.18.4版本)和安装以及中文设置

    目录 一 FreeCAD是什么 二 如何下载FreeCAD 三 FreeCAD安装过程 四 如何设置成中文 一 FreeCAD是什么 我本意是想用Qt连接CAD实现CAD的二次开发 实现在qt界面改变参数同时CAD图纸上的尺寸发生相应变化
  • Linux之Web服务器配置(Apache)

    摘要 Web Service技术 能使得运行在不同机器上的不同应用无须借助附加的 专门的第三方软件或硬件 就可相互交换数据或集成 依据Web Service规范实施的应用之间 无论它们所使用的语言 平台或内部协议是什么 都可以相互交换数据
  • 基于stm32f103c8t6HAL库六路电磁寻迹智能车

    基于stm32f103c8t6HAL库六路电磁寻迹智能车 学习单片机第一次参加相关比赛 下面分享一些关于调车的心得 1 控制舵机 舵机是控制小车转向的器件 而PWM波可以控制舵机 占空比越大 舵机旋转角度越大 接下来我们打开cubemx配置
  • FreeSwitch常用命令

    1 通话相关 先打客户 再转坐席 没有录音 EslMessage elme client sendSyncApiCommand originate sofia gateway huawei 015011275853 bridge user
  • JDBC数据源配置及管理

    JDBC驱动程序 JDBC驱动程序组件为java程序连接不同数据库系统提供服务 它通常由数据库系统方开发提供或由第三方提供 下载对应不同数据库的JDBC 数据库连接信息配置 URL 连接数据库系统资源描述符 DriverClass 数据库系
  • 交付文档注意事项

    最近涉及到项目交付 编写了很多技术文档 但因为没有经验导致多次修改 尤其是客户和我们技术人员的关注点其实是不一样的 就导致我没有抓住重点 导致反复修改 这里总结下我的一些经验 文档与技术协议合同对应 就我所经历的项目 前期的技术要求和最后的
  • 十大必掌握C++11新特性

    简介 C 11 之前被称作C 0x 即ISO IEC 14882 2011 是目前的C 编程语言的正式标准 它取代第二版标准ISO IEC 14882 2003 第一版ISO IEC 14882 1998发布于1998年 第二版于2003年
  • OCR测试——字体和背景颜色

    测试目的 测试图片中字体颜色和背景颜色对文字识别的影响 一 测试图片选择 黑色字体 白色背景 黑色字体 橙色背景 绿色字体 黑色背景 绿色字体 白色背景 白色字体 绿色背景 白色字体 橙色背景 橙色字体 白色背景 混合色字体 混合色背景 二
  • c# 遍历文件夹下的.exe文件,找到主应用程序文件

    遍历文件夹下的文件 exe文件 public static string ForeachFiles string FilePath SearchOption AllDirectories 指遍历全部的子文件夹 所有都遍历一次 string
  • 见到的一篇IOCP流程 自己用demo实现了一下, 简单照抄,改动了一点点

    要分析的实例分为两个线程 分别是主线程 MAIN 还有一个是创建的线程 ServerThread 1 主函数完成初始化工作 1 1 主线程 HANDLE hCompletion CreateIoCompletionPort INVALID
  • 针对树莓派vnc连接被拒绝,树莓派固定ip后上不了网的问题

    三月份玩了会树莓派 实现树莓派小车的自动登录 自动连接wifi 固定ip和vnc远程连接 具体见之前的树莓派小车记录的博客里 昨天发现小车虽然可以连接wifi 固定ip 甚至能vnc连接但是没有网络 ping不通除了自身ip以外的任何地址
  • SpringBoot单元测试Mock静态方法

    这两天写单元测试碰到了一个问题 就是这个subnetmap里面的数据格式我不知道是怎么样的 所以直接mock掉返回自己指定的值吧 mockito库并不能 mock静态方法 需要依赖powermock这个库才能对静态方法mock 可以直接用这
  • fastadmin 配置完成后部署到服务器报找不到模块问题

    现象 本地直接安装的fastadmin框架可以正常运行 迁移到服务器或者给别人用的时候就不行了 跟这个问题差不多nginx配置了rewrite fastadmin后台首页可以访问 但一刷新会去首页 怎么办 FastAdmin问答社区 现象一
  • 代码走查和代码审查_21世纪的代码审查

    代码走查和代码审查 有句老话说 不要谈论宗教或政治 为什么 因为这些主题充满了强烈的见解 但客观答案却很薄弱 一个人的确定性就是另一个人的怀疑 别人的常识只是对那些持不同看法的人的先验偏见 可悲的是 与这些有争议的主题进行对话会产生比光更多