上一篇列举了一些比较常见的Code Review问题列表,文末有链接,可追溯查看。本篇为上篇的姊妹篇,继续列举一些上篇遗漏的或不易发现的问题清单,希望能整体性把一些常见的问题表述出来。

  • 测试数据不具有代表性,导致功能分支测试覆盖率不够,真正提交测试时很容易暴露出问题,对已对人都不好。

  • 事务使用不合理,是否在事务方法中调用外部服务。有些在只读事务操作数据,在启用事务配置时要特别注意,应避免此类操作。

  • 对于关键数据未进行为空判定,一个空NullPointer异常足以打乱所有正常的业务逻辑走向。

  • 涉及分布式系统间交互数据时,无补偿机制来保证数据的最终一致性。也就是说非正常情况下的保障措施缺失。

  • 系统间关键交易交互时,无交易记录留存,后期数据分析、系统间数据核对基本无从下手,造成一些不弥补的损失。

  • 与第三方系统接口交互,仅考虑同步数据返回,异步数据返回未编写对应方法,导致一部分业务场景下数据不一致。

  • 异常信息处理欠妥当,直接将错误信息返给前端用户,体验较差。此类信息需要包装,尽量对用户友好。

  • 从文件布局考虑,包结构、文件目录结构等安排不合理,文件存放错乱,统一职能文件未能统一规范摆放存储,这给后续系统维护增加难度。

  • 从单个功能处理看,很正常,但推演到全局功能来讲,有些功能类型或流程相同,可以采用模板模式等前人抽象出来的设计模式来重构,提升代码的精简性。

  • 对于后期可能发生变更的功能,缺少潜在可见的扩展性,这个可事先规划好,完全可以兼容可以预见的变更。

  • 代码兼容性比较弱的或者有些淘汰不建议的方法依旧在使用,建议换成兼容性较好的方法或替代方法,一旦时间长远,这些不再兼容,极易引起bug。

  • 多线程中使用了一些线程不安全的对象,比如常见的日期数据格式化类SimpleDateFormate,建议采用concurrent工具包里面的或Guava里面的方法或实体。

  • 采用数据库进行共享锁操作时,存在漏洞。先select再update时有时间空档,容易被其它线程更改数据。应直接采用update的方式直接拿数据,如update table set colum=1 where colum=0

  • 最后一条,也是比较关键的一条。代码逻辑正常,但与业务逻辑不符,好比此处需要一个螺母固定,却放了把瑞士军刀,虽然很强大,但无用。此类问题隐藏较深,所以需要Review人员经验丰富且对业务熟知,否则仅是经验丰富也很容易遗漏掉,造成题不对文的局面。

这两篇内容是笔者实际工作中总结出的几点经验,肯定还有其它Code Review过程产生的其它问题文章里没有提及到的,有兴趣的朋友可以留言在文章底部,把问题抛出来,群策群力不失为一个进步的好办法。

上一篇传送门:常见Code
Review过程中发现的问题

基于SpringCloud的Microservices架构实战案例

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

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

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

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

常见Code Review过程中发现的问题-续的更多相关文章

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

    软件环境:Spring MVC + MyBatis 主要体现在两个方面,一个是编码习惯问题,另一个是编码质量的问题.编码习惯主要有日志编写.代码注释以及编码风格的问题,而编码质量则与很多方面相关,比如 ...

  2. 为Secure Store Service生成新密钥,解决“生成密钥过程中发现错误”的问题

    我们集成TFS和SharePoint Server以后,一个最常见的需求是通过SharePoint Server的Excel Service读取TFS报表中的信息,利用Excel Service的强大 ...

  3. 调试过程中发现按f5无法走进jdk源码

    debug 模式 ,在fis=new FileInputStream(file); 行打断点 调试过程中发现按f5无法走进jdk源码 package com.lzl.spring.test; impo ...

  4. Hive通过查询语句向表中插入数据过程中发现的坑

    前言 近期在学习使用Hive(版本号0.13.1)的过程中,发现了一些坑,它们也许是Hive提倡的比关系数据库更加自由的体现(同一时候引来一些问题).也许是一些bug.总而言之,这些都须要使用Hive ...

  5. 在网站制作过程中发现的block和inline-block不同。

    inline-block,简单来说就是在CSS中通过display:inline-block对一个对象指定inline-block属性,可以将对象呈递为内联对象,但是对象的内容作为块对象呈递.有时既希 ...

  6. VS 2017开发ASP.NET Core Web应用过程中发现的一个重大Bug

    今天试着用VS 2017去开发一个.net core项目,想着看看.net core的开发和MVC5开发有什么区别,然后从中发现了一个VS2017的Bug. 首先,我们新建项目,ASP.NET Cor ...

  7. sqlserver2017安装及连接过程中发现的问题

    1.SSMS安装报错,如下图 根据搜索资料发现是防火墙的问题,关闭防火墙就行了. 2.连接用户时报错 这个是因为远程连接相关问题. 首先打开服务器远程连接: 其次点击: SqlServer配置管理器- ...

  8. vue生命周期updated的触发时机之debug过程中发现的firefox问题

    现象描述: 断点位置1 谷歌debug的过程: 火狐debug的过程: 只要在改变数据之后有断点停顿,就会先去执行updated函数 断点位置2 此时火狐和谷歌是一样的效果,但是执行顺序是不一致的 谷 ...

  9. 使用Android studio过程中发现的几个解决R变红的办法

    刚开始使用Android studio的时候,好几次碰见新建了一个xml文件,或者new了一个activity之后,Android studio莫名其妙的报错了,而显示红色的地方就是常用的(R.id. ...

随机推荐

  1. 零元学Expression Blend 4 - Chapter 32 简单轻松的学会如何使用Visual States(上)

    原文:零元学Expression Blend 4 - Chapter 32 简单轻松的学会如何使用Visual States(上) Visual State Manager中文翻译为视觉状态管理器,这 ...

  2. Android零基础入门第88节:Fragment显示和隐藏、绑定和解绑

    在上一期我们学习了FragmentManager和FragmentTransaction的作用,并用案例学习了Fragment的添加.移除和替换,本期一起来学习Fragment显示和隐藏.绑定和解绑. ...

  3. 简单的Windows Webcam应用:Barcode Reader

    原文:简单的Windows Webcam应用:Barcode Reader 在Windows上用WinForm创建一个Webcam应用需要用到DirectShow.DirectShow没有提供C#的接 ...

  4. [转]深入Android内存泄露

    深入内存泄露 Android应用的内存泄露,其实就是java虚拟机的堆内存泄漏. 当然,当应用有ndk,jni时,没有及时free,本地堆也会出现内存泄漏. 本文只是针对JVM内存泄漏应用,进行阐述分 ...

  5. TApplicationEvents的前世今生(待续)

    这是它的声明,它的数据成员全部都是Event,而没有真正意义上的数据(如此一来,几乎可以猜测,它本身什么都做不了): TCustomApplicationEvents = class(TCompone ...

  6. Qt实现网络播放器

        写了这么多的博客,关于网络的还不算多,经常有人询问一些关于网络传输.制作在线试听及下载音乐.构造及解析数据等的一些问题,今天就在这里一并讲解.   网络操作:     主要涉及:QNetwor ...

  7. IT++数学、信号、通讯类库,Blitz++数学,Armadillo 线性代数,Dlib网络,线程,图形,数学,图像,数据挖掘/机器学习,XML等等

    https://en.wikipedia.org/wiki/Blitz%2B%2B https://en.wikipedia.org/wiki/IT%2B%2B https://en.wikipedi ...

  8. sql 日志恢复

    可能有不少朋友遇到过这样的问题: update或delete语句忘带了where子句,或where子句精度不够,执行之后造成了严重的后果,这种情况的数据恢复只能利用事务日志的备份来进行,所以如果你的S ...

  9. Oracle_虚拟机安装教程

    需修改两个东西 一个为内存 内存改为4G 一个为加载CD/DVD文件 DVD文件为:Centos 6.9镜像 改完这两个东西之后 再启动 启动成功之后 Oracle虚拟机登录密码为 root 1234 ...

  10. Appium+python自动化(十)- 元素定位秘籍助你打通任督二脉 - 上卷(超详解)

    简介 你有道灵光从天灵盖喷出来你知道吗,年纪轻轻就有一身横练的筋骨,简直百年一见的练武奇才啊,如果有一天让你打通任督二脉,那还不飞龙上天啊.正所谓我不入地狱谁入地狱,警恶惩奸维护世界和平这个任务就交个 ...