Code Review的基本思路
一、业务检查
1. 业务流程正确性
代码实现的业务流程是否合理,是否按照产品需求设计,或者是否对之前的业务流程有影响。
2. 业务流程交互
业务流程的交互是否合理,即一个服务的多个接口的调用顺序是否符合用户习惯。
3. 业务的可拓展性
如某项业务数据的存储和结构是否能够支持未来业务的变化,如现在是统计A项数据,而未来可能统计与A相关的B项数据。
二、设计检查
1. 接口和方法设计
- 传参是否合理,如是否存在冗余传参,参数数据类型是否合理;
- 方法内部的相关判断和边界检查是否合理,如是否有考虑可能为null,0等情况;
- 方法内部的数据类型选型是否合理,是否可能存在潜在问题,如可能存在并发的地方使用了hashmap,而不是concurrenthashmap;
- 方法的数据字段的作用域是否合理,是否存在内存泄露风险,如静态集合类内部包含的对象会存在内存泄露的风险;
- 方法涉及是否考虑了异常处理,异常打印是否包含了接口核心参数的打印;
- 方法是否引入的新的第三方包的使用,第三方包是否存在风险,不同版本是否存在差异,如jackjson序列化包不同版本针对日期Date类型的序列化方式存在差异。
2. 数据库和缓存设计
- 数据表是反应业务逻辑的,故表的字段类型,长度等是否合理,是否存在溢出风险;表之间的关联是否合理;字段是否存在冗余,冗余是否是有益的;
- 分布式缓存和本地缓存是否合理,缓存失效和更新策略是否合理,是否存在缓存崩溃,缓存穿透问题;
- 表名,字段名,缓存key的命名是否合理。
3. 可读性和可维护性
- 注释与命名:关键设计是否有注释,接口、方法、字段命名是否能够反应业务含义;
- 方法是否存在太大问题,如果逻辑太多,可以考虑拆分为多个小方法;
- 代码风格问题,如缩进是否统一。
Code Review的基本思路相关推荐
- Google是如何做Code Review的?| CSDN原力计划
作者 | 帅昕 xindoo 编辑 | 屠敏 出品 | CSDN 博客 我和几个小伙伴一起翻译了Google前一段时间放出来的Google's Engineering Practices docume ...
- 刚进美团,就被各种Code Review,真的有必要吗?
点击关注公众号,Java干货及时送达 众所周知,Code Review是开发过程中一个非常重要的环节,但是很多公司或者团队是没有这一环节的,今天笔者结合自己所在团队,浅谈Code Review的价值及 ...
- 刚入职,就被各种 Code Review,真的有必要吗?
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:juejin.cn/post/ 6882333635 ...
- 有必要做 Code Review 吗???
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料!作者:梨香 链接:https://juejin.im/pos ...
- 你太菜了,竟然不知道Code Review...
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:宝玉 来源:http://1t.click/aA4h 我 ...
- 作为CTO,我为什么必须要求代码进行Code Review!
来源:宝玉 链接:https://cnblogs.com/dotey/p/11216430.html 我一直认为Code Review(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量, ...
- 万字详文告诉你如何做 Code Review
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|机器学习实验室 前言 作为公司代码委员会 golang 分 ...
- 在腾讯,如何做 Code Review?
作者:cheaterlin,腾讯 PCG 后台开发工程师 前言 作为公司代码委员会 golang 分会的理事,我 review 了很多代码,看了很多别人的 review 评论.发现不少同学 code ...
- Code Review最佳实践
我一直认为Code Review(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题.包括像Google.微软这些公司,Code Review都是基本要求,代 ...
最新文章
- 4.通过三个交换机实现VLAN间通信
- poi向word插入图片_如何使用word裁剪图片图形?如何使用word修整图片?
- windows编译libevent时报告“缺少print_winsock_errors.obj”的解决
- c++语言 tcp例子,C++中TCP通信实现文件传输
- html getelementbyid 修改图片_如何使用HTML、CSS和JS轻松构建桌面应用程序
- mysql5.045_数据库升级后goldengate报错,ORA-04045
- Linux 内核版本号查看
- HashMap,TreeMap,Hashtable,LinkedHashMap的区别
- Paper-----文献引用格式
- 【科技素养题】少儿编程 蓝桥杯青少组科技素养题真题及解析第16套
- 计算机重启删除了应用怎么办,电脑文件被删除怎么恢复?电脑总是无故重启怎么办...
- 连续翻页浏览器面临的共同问题
- 理解JDBC/JPA/Mybatis/Hibernate
- 手游测试常见10个坑及填坑建议
- vue 实现上拉加载下拉刷新(思路贼清晰)
- 利用微信小程序实现web监控界面
- 十大低代码开发平台排行榜,低代码开发平台哪个好用?
- [经验] 轻松解读PID控制算法的三种参数的自整定方法
- C语言 | 函数实现比较大小
- 使用matlab实现ISD悬架离散仿真分析
热门文章
- Pyecharts数据可视化之折线图(阶梯图、平滑曲线图、面积图)、K线图、常用配置项
- STM32F10xxx20xxx21xxxL1xxxx Cortex-M3程序设计手册 阅读笔记四(1):关于STM32核心外设
- 关于CSS九宫格展示图片写法
- centos-sftp
- Python实现猫脸识别 | 喵主子福利
- 【饭谈】【测试圈相亲平台开发流程】:页面样式开发心得【工匠、智者、航海家】
- 12V转5V,3.3V和24V转5V,3.3V的芯片功能介绍
- php-fpm error 慢执行,php-fpm的pool、php-fpm慢执行日志、open_basedir、php-fpm进程管理
- springboot 自定义日期出入参
- 前端代码规范之代码格式化配置