java编程设计开发规范之技术规范实践分享(曾指导某交易额过几百亿的互联网支付项目)

某支付项目实施的技术规范实践:

★ Object.equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals方法。推荐使用 java.util.Objects的equals方法(JDK7 引入的工具类)。

★ 关于基本数据类型与包装数据类型的使用标准如下:

        1) 所有的 POJO 类属性必须使用包装数据类型。

        2) RPC 方法的返回值和参数必须使用包装数据类型。

        3) 所有的局部变量推荐使用基本数据类型。

★ 序列化类新增属性时,请不要修改 serialVersionUID 字段,避免反序列失败;如果完全不兼容升级,避免反序列化混乱,那么请修改 serialVersionUID 值。

★ 构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放在 init 方法中。

★ 使用索引访问用 String 的 split 方法得到的数组时,需做最后一个分隔符后有无内容的检查,否则会有抛 IndexOutOfBoundsException 的风险。

★ Map/Set 的 key 为自定义对象时,必须重写 hashCode 和 equals 。

★ 通过 foreach 循环进行集合遍历时不要进行元素的 remove/add 操作。remove 元素请使用 Iterator方式,如果并发操作,需要对 Iterator 对象加锁。

★ 使用 entrySet 遍历 Map 类集合 KV,而不是 keySet 方式进行遍历,前者效率高。

★ 利用 Set 元素唯一的特性,可以快速对另一个集合进行去重操作,避免使用 List 的contains 方法进行遍历去重操作。

★ SimpleDateFormat 是线程不安全的类,一般不要定义为 static 全局变量,方法内的局部变量没问题。

★ 并发修改同一记录时,避免更新丢失,要么在应用层加锁,要么在数据库层使用乐观锁,使用 version 作为更新依据。

★ 对于“明确停止使用的代码和配置”,如方法、变量、类、配置文件、动态配置属性等要坚决从程序中清理出去,避免造成过多垃圾。

★ xml 配置中参数注意使用:#{},#param# 不要使用${} 此种方式容易出现 SQL 注入。

★ 不要写一个大而全的数据更新接口,传入为 POJO 类,不管是不是自己的目标更新字段,都进行 update table set c1=value1,c2=value2,c3=value3; 这是不对的。执行 SQL 时,尽量不要更新无改动的字段,一是易出错;二是效率低;三是数据库的 binlog 增加存储。

★ 所有的对象(包括基本数据类型的包装类对象)之间值的比较,全部使用equals方法比较,不允许使用==比较。

★ 集合初始化时,尽量指定集合初始值大小,以避免扩容影响效率。

★ 工程直接依赖的jar包,以及间接依赖的jar包,都必须在Maven的pom.xml文件中配置,以避免发生版本不一致的问题。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值