常见Code Review过程中发现的问题

 软件环境:Spring MVC + MyBatis 

 

        主要体现在两个方面,一个是编码习惯问题,另一个是编码质量的问题。编码习惯主要有日志编写、代码注释以及编码风格的问题,而编码质量则与很多方面相关,比如轮子的使用、数据交互、逻辑精简程度等等。下面展开来说

 

编码习惯问题:

  1. 方法体偏长,不易管理维护,可逐步抽取成小方法来减少代码长度。

  2. 缺少注释或注释与实现不符,这对后期维护人员是个伤害。

  3. 硬编码,随手写的代码或测试时的死数据或常见的公共常量未维护,一旦发生变更,维护的代码量较大

  4. 日志缺失或缺少或输出意义不大,一旦发生问题,线上排查难度较大

编码风格比较个性,读起来晦涩难懂,对融入团队是个障碍。

 

编码质量问题:

  1. 重复造轮子的问题,常见工具类使用不到位,经常自己写方法实现。比如Apache commons,Google Guava等。另一个是共用的业务代码,未能提交协商好,造成多个版本实现,后期维护成本上升。

  2. 公共数据使用不充分,存在重复调用的情况,而不是一次调用,多次使用,这种情况在与第三方交互的场景中对效率损伤更大。

  3. 参数过多时,可转化为对象传参,否则一个方法的参数要加大代码的可维护性。

  4. 采用MBG产生的单表的关联查询,但在业务中适合多表关联查的情况下,可多表联查,提高效率。【涉及NDB Cluster存储引擎,跨库Join问题】

  5. 代码命名,未能见名知意,这也是一个老生常谈的问题,起个优雅的名字是多么的重要。

  6. 代码逻辑不顺畅,存在走弯路的倾向,能精简的代码要反复的重构以达到最优目标。

  7. 多余代码,并无实际意义。如有些情况下,先查询,再更新,典型的hibernate的思路,完全可以采用以主键选择更新的方法。

  8. 需要异步处理的情况就不要同步处理,以免影响主业务流程效率。比如流程过程中产生的短信、推送通知等,以通知为主要目的的除外。

  9. 代码重复,针对功能类似的方法,可添加一个参数加以区分复用。

  10. 校验逻辑要提前,防止做无用功。

  11. 前后逻辑重复,Controller中作必输校验,Service无须再次校验。

  12. 虽标记了FIXME/TODO,却未实际修复,重构不能是一句空话。

     

     

何时实施代码重构:

        既然发现了问题,我们又该如何把握好节奏来重构我们的代码呢?下面推荐几比较好的重构时机:添加功能时重构、修补错误时重构 、复审代码时重构、时间空余时重构 

        

        回头审视过去的代码,就像审视我们的过去的编码思路、技巧,要想有所提升成长,就需要反复来重构,以达到一个最优结果。如果只是写过,事后不做复盘重构,对个人成长没有促进作用。

欢迎加入我的星球

基于SpringCloud的Microservices架构实战案例

介绍几款常用的在线API管理工具

你不得不知的几个互联网ID生成器方案

Spring Boot + Elasticsearch 实现索引的日常维护

软件生命周期与技术人的职业周期

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MavenTalk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值