java开发经理说在看到代码变量.equals(常量)保证打了他怀疑人生

[复制链接]
wmm41 发表于 2019-4-13 01:41:15 | 显示全部楼层 |阅读模式
来源:https://www.toutiao.com/group/6678903004088762893/
若内容不全,可点击上述链接查看来源网页,在网页中点击红色双层向下的箭头阅读全文
原站点评论数目:62

程序员、软件开发、码农、计算机

段子吐槽

java开发经理:谁代码写这样了变量.equals(常量)

保证打了他怀疑人生

程序汪:是我

开个玩笑,但低级问题导致的生产缺陷还真不少,目测会持续上演下图悲剧

经典低级问题

我来简单总结下

字符比较

变量.equals(常量),请不要这样写

如果requestStr入参是null就直接空指指异常了

正确是用StringUtils工具类来比较

集合遍历

集合遍历前忘记判空

下面代码如果入参names是null情况,也悲剧了空指针

List<String>names=Lists.newArrayList("程序汪","毛毛","莉莉");

for(Stringn: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数据库表字段设置为空时,

StringrequestStr="程序汪";

requestStr=null;

System.out.println(requestStr+"发工作啦");

输出结果:null发工作啦

代码风险意识
  • 程序员写代码应该有防NPE(空指针缩写)的意识
  • NPE非空逻辑保护
  • 线下阶段主要集中注意力在有数据情况测试,没有试过没数据的场景,属于功能测试遗漏
  • CR时增加对list对象的判空逻辑敏感度