提高代码质量:代码审查

2023-11-04

   在项目开发中,代码质量是非常重要的一环。高质量的代码对项目完成质量、能否按时完工有重大影响。而一个团队中开发成员的配置往往是金字塔形的。基于开发成本考虑,项目主管或小组长一般由经验丰富的资深高级程序员担任,开发成员则由普通程序员、新员工、实习生组成。各个开发成员水平参差不齐,以及该行业内开发人员的高流动性。这样的条件和环境必然带来代码质量问题。项目主管难于把握项目进度,很容易造成项目延期,即使加班不少。

    既然问题存在了,就必须解决它。解决的思路就是代码审查。

    代码审查的前提:

  1.    统一项目组内部代码审查必要性思想,消除猜忌,建立融洽的团队合作气氛。代码审查不是挑刺。不建议使用审查中问题的发现率作为绩效考评标准。
  2.    确立合乎自己项目组要求的代码规范文档;
  3.     确立代码审查者:项目组成员少于3个,组长是审阅者。多了则要适当按模块分小组,每组不多余3人,每小组选经验丰富的程序员做为代码审阅者。要求代码审阅者与被审阅人最好为同一模块开发者。小组长的工作安排时就应考虑其代码审查职能,并相应减少其代码工作量。
  4.     确立审查标准、部署审查代码工具。普通程序员代码提交之前由代码审阅者实施审查。审阅代码者多于2人同时又有代码提交时,审阅代码者互审。

    代码审查内容:

  1.    代码风格。通过代码复查,一方面督促开发人员按照规范编写代码,另一方面也使开发人员自身形成良好的编程习惯。代码风格的审查,由于内容比较单一,我们常常可以通过一些代码复查的工具来自动完成,提高复查的效率。
  2.    重大缺陷。预先整理编写代码审查的重大缺陷列表,并根据实践经验不断更新、补充、积累审查项目,并在每次审查中逐一检查。这些审查项目根据经验划分等级、优先级。
  3.   设计逻辑与思路的审查。这部分的审查是代码复查中最核心、最有价值的部分。代码风格与重大缺陷的审查,虽然重要但简单而机械,可以通过软件自动检查;而设计逻辑与思路的审查,却是复杂而有深度的审查,需要有一定理论深度和编码经验的人才能完成,而且对新手尤其重要。在新手完成编码以后,让老手去进行代码复查,指出新手的问题,指导新手设计。这样的过程最初可能需要重构,甚至重新编码。新手的进步、成长速度是加快的。老手通过对新手的指导,整理和升华自己的设计思路与理论,同时也是对自己另一方面的锻炼与提高。最终整个团队都得到了提高。

     但代码审查无疑也带来了很高的代价。时间、人力与代码质量,其本身就是鱼和熊掌不可兼得。因此不同公司、同公司不同发展时期就会采取不同的代码复查策略。审时度略,实事求是,每个项目组都应该提出适合自己的代码审查方法。



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

提高代码质量:代码审查 的相关文章

  • (个人)AR电子书系统创新实训第五周(1)

    服务器上传大文件的问题 在搭建并使用了云服务器后 我遇到了一个奇怪的问题 如果上传的文件中包含了视屏的话 上传就会失败 同时返回一个402error页面 一开始 我以为是文件类型的问题 通过网上查找后 我发现问题依然在于服务器本身的设置上

随机推荐

  • linux学习lesson14

    目录 1 df命令 2 du命令 3 磁盘分区 1 df命令 命令df disk filesystem的简写 用于查看已挂载磁盘的总容量 使用容量 剩余容量等 可以不加任何参数 默认以KB为单位显 i 表示查看inodes的使用状况 如已使
  • zookeeper环境构建

    关于zookeeper的作用这里不再作详述 相信很多开发人员在很多场景都使用zookeeper作为任务协调 1 安装jdk 这里不述详述 下载jdk压缩包 并在 etc profile中增加相关的环境变量配置 export JAVA HOM
  • python各个版本区别_Python 的各个版本

    Python 现在用的最多的就是两个版本 Python 2 x 系列 以及一个较新的 Python 3 x 系列 Python 3 x 系列是开始于2008年的十二月的 3 0 版本 从这个版本发布开始 Python 2 7 之后就只有小版
  • 解决Jetbrains旗下产品的插件下载失败问题(IntelliJ IDEA、RubyMine、WebStorm、PhpStorm、PyCharm、AppCode、Android Studio等)

    博主主要关注IntelliJ IDEA插件 使用时安装超时 解决办法其实很简单 进入Jetbrains官方插件仓库地址 https plugins jetbrains com 选择你所用的开发工具 然后在左上角搜索框搜索你需要的插件 搜索后
  • JDK1.8 之Stream API总结

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Stream是 Java 8新增加的类 用来补充集合类 Stream代表数据流 流中的数据元素的数量可能是有限的 也可能是无限的 Stream和其它集合类的区别在于 其它集
  • mysql insert into多条_MySql中使用INSERT INTO语句更新多条数据的例子

    我们知道当插入多条数据的时候insert支持多条语句 复制代码 代码如下 INSERT INTO t member id name email VALUES 1 nick nick 126 com 4 angel angel 163 com
  • 如何解决:FileNotFoundError: 以及[Errno 2]No such file or directory

    出错原因 因为种种问题系统无法找到对应路径的文件 案例如下 我在pycharm的目录下新建了一个apple txt文件 想通过open 获取到对应文件里面的内容 结果提示 Errno 2 No such file or directory
  • Spark环境搭建部署全流程(Linux),看这一篇就够了

    前言 本篇文章将给各位展示如何快速地在linux上搭建spark 本文搭建的环境为Vmware 16 pro 下的CentOS 7 linux hadoop版本为3 x以上 Jdk1 8 以下是我总结出的spark几种模式的部署流程 如果是
  • 原来游戏技术行业最大的秘密竟然是...

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由腾讯游戏云发表于云 社区专栏 本篇文章主要是分享游戏业务面临的安全风险场景 以及基于这些场景的特点 我们应该如何做好对应的防护 一 背景 游戏行业DDoS攻击愈演愈烈 2017
  • Python模块multiprocessing & 实现多进程并发

    简介 multiprocessing模块是Python标准库中提供的一个用于实现多进程编程的模块 它基于进程而不是线程 可以利用多核CPU的优势 提高程序的执行效率 同时也可以实现进程间通信和数据共享 目录 1 参数说明 1 1 Proce
  • FastAPI从入门到实战(12)——错误处理

    错误提示是非常重要的 比如权限控制 资源控制等场景 需要服务器返回给用户错误提示 包括状态码和提示等内容 所以本文就主要记录FastAPI里的错误处理相关的内容 抛出一个HTTPException app08 get stu08 id de
  • UE 5 实现骨骼物理模拟 乳摇

    打开角色的物理资产 如果是下载的或者官方的模型 都会内带物理资产 模拟 可以根据分块模拟当前物体的物理效果 点击右上角的模拟 可以模拟布娃娃系统 Ctrl 鼠标右键可以实现对布娃娃施加力的效果 模拟选中项 模拟选中项可以只模拟一部分物体 选
  • 性能监控工具-Grafana安装和使用方法

    Grafana是一款开源的数据可视化和监控平台 它提供了丰富的可视化方式 如图表 仪表盘 警报等 支持多种数据源 包括Prometheus InfluxDB Graphite等 适用于各种规模的系统监控和数据分析 Grafana还有一个强大
  • ef框架 动态切换数据源信息(切换连接字符串)

    在一些特殊的场景 我可能会更换访问的数据库 猜想 玩游戏的时候 选择不同的区登录 选区就是更换数据库 比如你用qq登录王者 可登录1区或者2区 两个区中 你的英雄 皮肤 和段位是不一样的 上下文的调整 1 在上下文中加入一个静态的字段 pr
  • mysql重置数据库主键_重置Mysql主键的方法

    方法一 如果曾经的数据都不需要的话 可以直接清空所有数据 并将自增字段恢复从1开始计数 truncate table 表名 方法二 dbcc checkident table name reseed new reseed value 当前值
  • 数据库:关系模型基本介绍

    关系模型研究什么 关系模型就是处理Table的 它由三个部分组成 1 描述DB各种数据的基本结构形式 2 描述Table与Table之间所可能发生的各种操作 关系运算 3 描述这些操作所应遵循的约束条件 完整性约束 就是要学习 Table如
  • 深度学习工程实践 6. 使用pytorch训练自己的眼球分割模型

    深度学习工程实践 6 使用pytorch训练自己的眼球分割模型 1 概述 2 目标 3 工程实践 3 1 数据寻找 数据标注 3 2 训练 3 3 部署应用到桌面程序 4 总结 1 概述 眼球分割 如果是在特定的眼球拍摄场景下 实际上直接用
  • mysql 视图

    目录 1 视图简介 1 1 视图的含义 1 2 视图的作用 2 创建视图 2 1 创建视图的语法形式 2 2 在单表上创建视图 2 3 在多表上创建视图 3 查看视图 3 1 DESCRIBE语句查看视图基本信息 3 2 SHOW TABL
  • 上海马普计算机考研,【分享】马普所博士研究生计划 - 计算模拟 - 小木虫 - 学术 科研 互动社区...

    马普所博士研究生计划 今年五月起 研究计划 膜与蛋白质及粒子的相互作用 将Monte Carlo与分子动力学以及理论计算相结合 研究吸附或包埋的蛋白质与粒子对生物膜物理相行为的影响 强调模型体系的生物意义 导师介绍 Thomas Weikl
  • 提高代码质量:代码审查

    在项目开发中 代码质量是非常重要的一环 高质量的代码对项目完成质量 能否按时完工有重大影响 而一个团队中开发成员的配置往往是金字塔形的 基于开发成本考虑 项目主管或小组长一般由经验丰富的资深高级程序员担任 开发成员则由普通程序员 新员工 实