程序员、软件开发、 码农 、计算机
段子吐槽
java 开发经理:谁代码写这样了变量.equals(常量)
保证打了他怀疑人生
程序汪:是我
开个玩笑,但低级问题导致的生产缺陷还真不少,目测会持续上演下图悲剧
经典低级问题
我来简单总结下
字符比较
变量.equals(常量) ,请不要这样写
如果requestStr 入参是null就直接空指指异常了
正确是用StringUtils工具类来比较
集合遍历
集合遍历前忘记判空
下面代码如果入参names是null情况,也悲剧了空指针
List<String> names= Lists.newArrayList(“程序汪”,”毛毛”,”莉莉”);
for(String n:names){
//TODO 业务逻辑
}
正确方式 用spring的集合工具判空在继续操作
if(!org.springframework.util.
CollectionUtils. isEmpty (names)){
System.out.println(StringUtils.join(names.toArray(),”,”));
}
空字符和null不敏感
很多业务空字符和null就是2种场景
码农有时记住防null但忘记了空字符情况
很贴心的工具类
org.apache.commons.lang.StringUtils
字符拼接
字符拼接忘记防null
关键这种null场景不会直接异常,前端页面就会出现null字符很奇怪,防空下就搞定
特别注意 mysql 数据库表字段设置为空时,
String requestStr=”程序汪”;
requestStr=null;
System.out.println(requestStr+”发工作啦”);
输出结果:null发工作啦
代码风险意识
- 程序员写代码应该有防NPE(空指针缩写)的意识
- NPE非空逻辑保护
- 线下阶段主要集中注意力在有数据情况测试,没有试过没数据的场景,属于 功能测试 遗漏
- CR时增加对list对象的判空逻辑敏感度