中华人民共和国共有省、自治区、直辖市、特别行政区4种省级行政单位,目前共有4个直辖市:北京市、上海市、天津市、重庆市。
一、概念
代码审查(英语:Code review)是指对计算机源代码系统化地审查,常用软件同行评审的方式进行,其目的是在找出及修正在软件开发初期未发现的错误,提升软件质量及开发者的技术。代码审查常以不同的形式进行,例如结对编程、非正式的看过整个代码,或是正式的软件检查,一般在合并主分支前进行。
二、方法
目的:总结经验,提高自己,避免错误
参与人员
- 主持人——主持控制流程
- 功能负责人——答疑/讲解
- 记录人——记录问题
- 组员——reviewer
主持人/功能负责人/记录人可以是同一个人,方便记录整合
基本流程
- 主持人带电脑投影对比代码。开场
- 讲解人分享业务逻辑和设计思路,技术经验。并且对代码功能进行介绍
- review代码可读性,风格格式
- review数据结构
- review代码逻辑
- 结束后整理问题及可优化点 形成wiki或者 issuse
基本原则
- 不要刻意的去寻找代码bug
- 不要按照自己的编程风格去评论别人的代码
- 不要带着抨击和质疑别人能力的心态去进行代码评审
- 不要在不确定的问题上长时间争论
- 不要听不进别人的意见
review项
基本
- 代码能够工作么?(有没有实现预期的功能,逻辑是否正确等)
- 所有的代码是否简单易懂?
- 代码符合遵循的编程规范么?(包括大括号的位置,变量名和函数名及其可读性,行的长度,缩进,格式和注释,单双引号等)
- 是否存在多余的或是重复的代码?
- 代码是否尽可能的模块化了?
- 是否有可以被替换的全局变量?
- 是否有被注释掉的代码?
- 循环是否设置了长度和正确的终止条件?
- 是否有可以被库函数替代的代码?
- 是否有可以删除的日志或调试代码?
安全
- 所有的数据输入是否都进行了检查并且进行了编码?(非空,类型,长度,格式和范围)
- 在哪里使用了第三方工具,返回的错误是否被捕获?
- 输出的值是否进行了检查并且编码?
- 无效的参数值是否能够处理?
文档
- 是否有注释,并且描述了代码的意图?
- 所有的函数都有注释吗?(包含参数、返回、作者、时间)
- 对非常规行为和边界情况处理是否有描述?
- 第三方库的使用和函数是否有文档?
- 数据结构和计量单位是否进行了解释?
- 是否有未完成的代码?(TO DO项)
核心
- 检查设计的合理性和业务逻辑的正确性 重点关注资源消耗 发奖操作
- 数据库字段设计是否满足需求,实体类设计是否合理
- 是否有异常处理机制
- 是否影响后续业务的扩展
- 关注数据结构
- 是否有影响性能的代码:数据库批量操作,资源是否关闭
可读性和可维护性
- 必要的注释: 类,方法,复杂代码段,命名规范
- 重复代码抽取成方法
- 繁琐代码,能简单实现的地方是否需要优化
总结
- 设计思想
- 技术方法
- 业务知识
- 编程规范
- 代码风格如何避坑