高质量代码实践
文章平均质量分 71
灿若繁星
这个作者很懒,什么都没留下…
展开
-
踩坑笔记之Integer数值比较
很多东西,表面上看起来挺简单,实际上别有洞天,一不小心就是一个坑。记录一下昨天遇到的Integer数值比较所遇到的“奇葩BUG”。1.问题场景 先看如下一段代码if(activity.getTotalCounts()==activity.getParticipationCounts()) { long time = activity.getUpdatedAt().getTime()+6原创 2015-11-06 09:24:08 · 1605 阅读 · 0 评论 -
【高质量代码系列1】过多的if else 代码重构技巧总结
一、if else 的滥用在实际业务开发中,常常面临多个条件判断的情况,如果不加思索就写代码,很容易出现一堆if else 的代码,导致代码逻辑不清晰,可阅读性很差,笔者现在改造中的一个历史遗留项目,大片大片的if else,给后来人带来很大的理解成本。过多的if else ,这是很明显的坏代码的味道,这时就应该考虑自己的设计是否合理,有没有更好的表达方式了。二、if else 重构技巧1.适当提...原创 2018-03-15 21:04:29 · 18069 阅读 · 2 评论 -
【高质量代码系列2】switch 语句重构技巧总结
switch 语句在日常开发中,常常用来根据不同的类型,执行不同的操作。如果类型很多,整个swtich代码会变得很臃肿,代码可扩展性、可阅读性都很差。针对这个问题,我们可以考虑使用多态来解决,将每个类型的行为封装到一个子类中。下面以加减等计算类型的操作为例说明这个问题 1public enum CalculateType { 2 3 ADD("add","加法"),SUB("sub","...原创 2018-03-28 09:36:01 · 2939 阅读 · 3 评论 -
spring 事务应用误区总结:那些导致事务不回滚的坑
基于JDBC的 Spring事务在项目中常用来保证数据的一致性, 想要正确的使用,绝不是加一个@Transactional那么简单。最近团队内在排查事务不生效的问题时,就遇到了一个很典型的错误应用的场景。本文就几个容易遇到的导致事务不生效的场景做个总结。一、Spring事务原理在使用JDBC事务操作数据库时,流程如下:1//获取连接 21.Connection con = DriverManag...原创 2018-05-13 15:36:11 · 7775 阅读 · 1 评论 -
Mybatis selectKey 采坑笔记
1.现象描述观察某张表的数据时,发现设置了自增属性的AutoId,在插入数据后并不是自增的,而是数值跳跃着增加的。2.问题排查在确认AutoId的自增属性设置没有问题后,开始怀疑是不是insert语句的问题,insert语句是MyBatis Generator自动生成的,示例如下:<insert id="insert" parameterType="com.xx.yy.datasource....原创 2018-06-13 15:54:54 · 13266 阅读 · 0 评论