本文将总结我2021年1月,第一次实习过程中,在项目开发遇到的编程规范问题或者平时未有注意的规范问题,以及list出一些编程技巧等等,不定期更新,觉得有用建议收藏,欢迎品论区补充,我将一起整理到文章中,共勉!
1. 把字符串常量放在前面
“string_constant”.equals(str),避免str出现空指针异常,不过企业中项目都会有工具类可以直接调用,也有引入的第三方包,常见如hutool工具包等等。
2.比较两个BigDecimal对象时,compareTo方法只比较值是否相等,返回值是int类型;equals方法对值与精度都进行比较,都相等返回true,否则返回false。
3.涉及金额等精确浮点计算的数据类型必须用BigDecimal,float、double类型会丢失精度禁止使用。
4.不能使用过时的类或方法。接口过时必须加@Deprecated注解,并清晰地说明采用的新接口或者新服务是什么。
5.所有的相同类型的包装类对象之间值的比较,必须使用equals方法比较。基本类型与其包装类对象比较,要么把包装类转为基本类型使用==比较,要么把基本类型转为包装类型对象后使用equals方法比较。
6.Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals,建议使用以下方法:Objects.equals(a, b) 或者 ObjectUtil.equal(a, b)、ObjectUtil.notEqual(a, b);
7.集合初始化时,指定集合初始值大小。 说明:HashMap使用如下构造方法进行初始化,如果暂时无法确定集合大小,那么指定默认值(16)即可。
1)、List评估大小:Listlist = new ArrayList<>(2);
2)、Map评估大小:MapparamMap = MapUtil.newHashMap(2);
3)、避免字符串拼,使用StringBuider并评估大小,或者使用StrUtil.concat 或者 StringUtils.concat:
StringBuilder builder = new StringBuilder(30);
String log = StrUtil.concat(true, “a”, “b”, “c”);
8.使用DTO,避免使用Map或者JSONObject传递参数(包括方法的参数传递);
9.获取当前毫秒数:System.currentTimeMillis(); 而不是new Date().getTime();
10.避免用Apache Beanutils进行属性的copy。Apache BeanUtils性能较差,可以使用其他方案比如Spring的BeanUtils,Hutool的BeanUtil。