观点
不要用 xx != null && xx.length() > 0
来判空,可以使用 apache 的 commons 包。例如使用:
StringUtils.isNotEmpty
CollectionUtils.isEmpty
不容拒绝理由
使用 xx != null && xx.length() > 0
来判空,公司里的静态代码检查会检查让你覆盖这两个条件,你需要写两个单测来完成任务。而使用 apache 的 commons 只需要写一个单测。你的条件覆盖率达标了吗?
深层原因
StringUtils类的源码:
public static boolean isNotEmpty(String str) {
return !isEmpty(str);
}
public static boolean isEmpty(String str) {
return str == null || str.length() == 0;
}
咦,好像和自己实现的差不多嘛!str == null || str.length() == 0
取个反,还多个一个反运算。效率一点也不高嘛!
请注意这两个方法是静态的!静态方法在类加载时候初始化,常驻在内存中只存一份。而自己写的判断语句,只能这个方法使用,其他方法同样的语句要复制一份。静态方法更加方便快捷。
当然,apache 的 commons 最根本的优势是语义更加清晰,更易读。