代码审查(文档整理)

article/2025/9/15 19:27:08
  • 常用的代码审查工具
git/SUBVERSIONGerritUpsource
显示代码变更
使用源码仓库
在线代码讨论
异步审查支持
使用协议GPLv2/Apache License 2.0Apache License 2.0付费license
  • 代码审查
    • 范根检查法
      在这里插入图片描述
    • 轻量级的审查流程
      • 结对编程
      • 同步代码审查
      • 异步代码审查
    • 代码审查需要关注什么
      • 编码风格
      • 命名规范
      • 功能性
      • 测试覆盖
      • 复杂度
      • 注释
      • 设计
      • 安全性

如何做代码审查

编码风格

命名风格
1. 不以下划线或美元符号开头或结束
2. 类名UpperCamelCase
3. 方法名、参数名、成员变量、局部变量都统一使用lowerCamelCase风格
4. 常量命名使用全大写,单词间用下划线分隔
5. 包名统一使用小写
6. 禁止拼音命名
7. 禁止不规范的缩写
常量定义
1. 禁止未定义的常量
2. 长整型赋值需要使用大写L后缀
3. 变量值可穷举,考虑使用枚举
代码格式
1. 采用4个空格缩进,禁止使用tab字符
2. 单行字符数限制不超过120个
3. 换行符使用unix格式
4. 运算符的左右两边都需要加一个空格
5. 保留字与括号之间都需要加空格
6. 多个参数逗号后需要加空格
7. 左大括号前不换行,右大括号后换行;右大括号前换行,终止的右大括号后换行
OOP规约
1. 静态方法/变量使用类名访问
2. 复写方法增加@Override
3. 禁止过时方法/类的使用(@Deprecated)
4. 包装类型比较使用equals方法
分支控制
1. switch中,每个case必须使用continue/break/return终止或者注释说明到那个case终止
2. switch需要对字符串判空
3. 分支逻辑使用大括号
注释
1. 类/方法注释使用javadoc规范
2. 方法内部单行注释,使用//  在需要被注释的语句上方单起一行
3. 无用代码删除,而不是注释

注: 可以使用Alibaba Java Coding Guidenlines 插件进行规约扫描, 或者在Gradle中使用checkstyle插件

一、命名

足够长以结石意图,但又不太长难以阅读。
命名
1. 使用有意义的名字
2. 范围越大,命名越长
3. 范围越小,命名越短
4. 避免使用非约定的缩写
5. 使用一种自然语言来命名,比如英语
6. 使用对应领域的专业名称,比如算法名称等
7. 不好命名,考虑类,方法职责过多,是否需要拆分重构
8. **一致性**

二、功能性

代码是否符合用户(真实用户,开发者)意图
功能性验证纬度
1. 输入输出、流程是否正确
2. 边界是否考虑并处理妥当
3. 是否有高并发的安全问题

三、测试覆盖

在规定的条件下对程序进行操作,以发现程序错误,衡量软件增量,并对其是否能满足设计要求进行评估的过程。
测试时间会占到总开发时间的20%~40%,一些可靠性要求非常高的软件,测试时间甚至占到总开发时间的60%。
测试金字塔

在这里插入图片描述

测试覆盖率
1. JACOCO

四、复杂度

复杂度高的问题
1. 可读性降低
2. 可维护性降低
3. 缺陷概率高
4. 模块内聚性低
复杂度度量

圈复杂度
V(G) = 判断节点数 + 1
在这里插入图片描述

复杂度优化
1. 方法抽取
2. 方向表达
3. 单一职责
4. 使用多态

五、注释

为什么注释?
1. 帮助理解作者意图
2. 帮助我们正确使用
好的代码无需注释?
1. 代码即注释
2. 代码再可读也不及自然语言
注释写到何种程度?
1. 对外、公共的接口
2. 模块、系统描述
3. 宁缺毋滥

六、设计

为什么要审查设计
1. 提升系统稳健性
2. 提升可读性/可维护性
3. 提升可扩展性
设计纬度需要审查什么
1. 是否足够解耦
2. 是否可以使用一些设计模式
3. 是否可以应对一些变化
4. 是否过度设计

七、安全

安全性低有什么问题
1. 数据易泄漏
2. 程序运行异常
3. 资源消耗异常
安全纬度需要审查什么
1. 源码库是否包含凭据
2. 敏感数据是否加密落库
3. 输出是否安全
4. 输入是否安全合法
5. 权限管控是否准确
6. 返回值谨慎使用null
自动化工具
1. sqlmap (sql注入检测)
2. owasp (依赖安全检测)
3. WebCruiser (Web检测工具,sql注入、web系统其他漏洞)

如何让代码审核更加高效

被审查代码作者
1. 变更描述要足够清楚
2. 单次改动不要过大
3. 积极接收反馈
审查代码者
1. 度量标准
2. 审查速度
3. 给予良好的反馈

整理来自:https://www.imooc.com/learn/1225


http://chatgpt.dhexx.cn/article/2Mm6JRcv.shtml

相关文章

代码审查“查”什么?

让我们来谈谈代码审查(Code Review)。如果花几秒钟去搜索有关内容,你会发现许多论述代码审查好处的文章(例如,Jeff Atwood的这篇文章)。你还会发现许多介绍如何使用代码审查工具的文档,比如我们…

uniapp的uview2.0框架u--textarea组件无法换行,换行无效问题解决方案

问题描述 在使用uniapp的uview2.0框架u–textarea组件时,想要使u–textarea支持换行输入,但是默认不支持换行输入,各种百度,没有找到解决问题的方案,最后只有查看源码如下 但发现源码没有对属性有过多的处理&#xff…

微信小程序textarea问题总结

微信小程序textarea问题总结 1.textarea多行输入框。该组件是原生组件 2.参考文档中的原生组件说明https://developers.weixin.qq.com/miniprogram/dev/component/native-component.html 原生组件的层级是最高的,所以页面中的其他组件无论设置 z-index 为多少&am…

JavaFX设置TextArea文本内容

本篇主要内容为设置TextArea的内容,涉及的知识面包括如何添加视图和控制层的关联,调用TextArea的方法设置文本内容,不仅实用于TextArea,还可以设置其它如Button,Label,TextField等组件的文本域或者其它属性…

原生div实现textarea

文章导航 为什么要用div实现textarea关键词实现效果源码示例 为什么要用div实现textarea div 实现 textarea 可以实现高度自适应 关键词 contenteditable: true|false 可以将元素内容区域调整为可编辑 实现效果 源码示例 &#x1f383; index.html <!DOCTYPE html>…

html textarea设置只读属性吗,HTML

HTML中的只读属性用于指定textarea元素为只读。如果文本区域为只读&#xff0c;则其内容无法更改&#xff0c;但可以复制并突出显示。这是一个布尔属性。 用法: Contents... 范例1&#xff1a;本示例使用只读属性在仅可读的输入textarea上写入内容。 HTML Textarea readonly A…

让textarea 只读

网上找到几种方案 都试了下 editable"false" readonly"readonly" disabled"disabled" 不知道是不是语法我写错了 但这么写效果是 &#xff08;顺寻代码和图片一致&#xff09; 第二个和第三个都是不能点 不能修改 第一个可以点可以修改

html页面只读,textarea只读 readonly =true;

Java TextArea 只读问题 TextArea ta new TextArea("",10,15,TextArea.SCROLLBARS_VEICAL_ON报啥错啊。 textarea怎么设置为只读 readonly true; C#语言&#xff1a;Listview控件中加了一个textarea&#xff0c;怎么在前台页面将textarea转化服务器控件&#xff0c;…

如何让textarea不可编辑只可读(博客常用)

如何让textarea不可编辑只可读&#xff08;博客常用&#xff09;。 Textarea的相关属性解释&#xff1a; rows&#xff1a;行高&#xff0c;就是你这个文本框能显示多少行文字 cols&#xff1a;宽度&#xff0c;代表你这个文本框有多宽 readonly&#xff1a;有个值readonly&am…

[评价体系] 1、数据规范化/无量纲化方法

目录 1 数据格式 2 不同属性类型的指标规范化方法 2.1 效益型指标&#xff1a;即该指标越大越好 2.2 成本型指标&#xff1a;即该指标越小越好 2.3 固定型/中间型指标&#xff1a;在某个固定值处最好 2.4 区间型指标&#xff1a;有最佳区间 2.5 偏离区间型&#xff1a;偏…

机器学习学习笔记(3)——量纲与无量纲,标准化、归一化、正则化

量纲、无量纲&#xff0c;标准化、归一化、正则化是我百度了很多次都不进脑子的知识&#xff0c;所以我决定还是放在博客上面。 不过鉴于我查阅了很多资料&#xff0c;说是有许多的坑&#xff0c;所以我也不清楚我的理解和解释是否是坑&#xff0c;具体的就留给各位来帮忙评判了…

数据的无量纲化处理和标准化处理的区别是什么

数据的无量纲化处理和标准化处理的区别是什么 请教:两者除了方法上有所不同外,在其他方面还有什么区别? 解答: 标准化处理方法是无量纲化处理的一种方法。除此之外,还有相对化处理方法(包括初值比处理)、函数化(功效系数)方法,等等。由于标准化处理方法可以与分布…

数据归归一化方法(标准化)

数据归一化方法 数据标准化&#xff08;normalization&#xff09;数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。 数据同趋化处理主要解决不同性质数据问题&#xff0c;对不同性质指标直接加总不能正确反映不同作用力的综合结果&#xff0c;须先考虑改变逆指标…

特征锦囊:特征无量纲化的常见操作方法

今日锦囊 特征无量纲化的常见操作方法 第一招&#xff0c;从简单的特征量纲处理开始&#xff0c;这里介绍了3种无量纲化操作的方法&#xff0c;同时也附上相关的包以及调用方法&#xff0c;欢迎补充&#xff01; 无量纲化&#xff1a;即nondimensionalize 或者dimensionless&am…

数据挖掘——无量纲化

在进行特征选择之前&#xff0c;一般会先进行数据无量纲化处理&#xff0c;这样&#xff0c;表征不同属性&#xff08;单位不同&#xff09;的各特征之间才有可比性&#xff0c;如1cm 与 0.1kg 你怎么比&#xff1f;无量纲处理方法很多&#xff0c;使用不同的方法&#xff0c;对…

量纲与无量纲、标准化、归一化、正则化【能够帮助梯度下降中学习进度收敛的更快、提升模型的收敛速度提升模型的精度、防止模型过拟合,提高模型的泛化能力】

目录 1 量纲与无量纲 1.1 量纲 1.2 无量纲 2 标准化 3 归一化 归一化的好处 4 正则化 5 总结 1 量纲与无量纲 1.1 量纲 物理量的大小与单位有关。就比如1块钱和1分钱&#xff0c;就是两个不同的量纲&#xff0c;因为度量的单位不同了。 1.2 无量纲 物理量大小与单位…

数据预处理----数据无量纲化(归一化和标准化)

文章目录 概述数据挖掘的五大步骤skleran中的数据处理和特征工程 数据预处理Preprocessing数据无量纲化数据归一化---MinMaxScaler示例 数据标准化----StandardScaler示例 MinMaxScaler和StandardScaler应该选哪个 概述 数据挖掘的五大步骤 数据获取数据预处理 数据预处理是从…

数学分析模型(一):数据的无量纲处理方法及示例(附完整代码)

数据的无量纲处理方法及示例(附完整代码) (1)极值化方法(2)标准化方法(3)均值化方法示例要求建模步骤程序结果备注在对实际问题建模过程中,特别是在建立指标评价体系时,常常会面临不同类型的数据处理及融合。而各个指标之间由于计量单位和数量级的不尽相同,从而使得…

数据无量纲化

数据无量纲化 在机器学习算法实践中&#xff0c;我们往往有着将不同规格的数据转换到同一规格&#xff0c;或不同分布的数据转换到某个特定分布的需求&#xff0c;这种需求统称为将数据“无量纲化”。譬如梯度和矩阵为核心的算法中&#xff0c;譬如逻辑回归&#xff0c;支持向…

量纲化处理汇总

在实际研究中&#xff0c;不同的变量单位不同&#xff0c;数值差异极大。例如100g和1m等。 因此有时需要对数据进行去量纲&#xff0c;所谓的去量纲就是‘去掉’单位对数值的影响。但是量纲化有很多种方式&#xff0c;但具体应该使用哪一种方式&#xff0c;并没有固定的标准&am…