最近在项目中看到这段代码:
if(StringUtils.isNotBlank(fileInfoVo.getShootModel())){
fileInfoVo.setShootModel(fileInfoVo.getShootModel().replace("\u0000",""));
}
if(StringUtils.isNotBlank(fileInfoVo.getShootTime())){
fileInfoVo.setShootTime(fileInfoVo.getShootTime().replace("\u0000",""));
}
if(StringUtils.isNotBlank(fileInfoVo.getRemark())){
fileInfoVo.setRemark(fileInfoVo.getRemark().replace("\u0000",""));
}
重复编写相同的逻辑,不利于维护,假如\u0000
换成别的,这里要改3处地方,万一别的字段也要这么做就不止3处了。
优化如下:
fileInfoVo.setShootModel(cleanString(fileInfoVo.getShootModel()));
fileInfoVo.setShootTime(cleanString(fileInfoVo.getShootTime()));
fileInfoVo.setRemark(cleanString(fileInfoVo.getRemark()));
private String cleanString(String str) {
return Optional.ofNullable(str).orElse("").replace("\u0000", "");
}
如果需要更改要替换的目标,只需要改动cleanString
方法中一处即可,且使用Optional
的方法减少了判空操作。
不要觉得写个方法是麻烦事,谨记一个方法尽可能做很少的事情(单一职责),宁可一个方法调用十几个方法实现一个大业务,也不可一个方法写个几百行。
更多优化方式欢迎评论区讨论,相互学习~