在if 不满足条件时直接return掉,就不用写else了,这样可以减少if的深度
对于你的例子了,如下:
if (!tokenCheck.equals(token)) {
obj.setStatus();
obj.setMsg();
return obj;
}
if (!isContinue) {
obj.setStatus();
obj.setMsg();
return obj;
}
if (action == 20) {
// TODO
} else if (action == 30) {
// TODO
}
这样会让代码好看一点.
如果你纠结设计模式的话,可以把“调用系统通知”和"调用短信接口"抽象成策略,实现共同的接口;
每个策略提供一个accept方法用于判断是否接受传入的actionId,如果accept通过,就可调用该策略的execute方法。
List<Strategy> strategys = new ArrayList<>();
strategys.add(new SystemNoticeStrategy());
strategys.add(new MessageStrategy());
for (Strategy stragety : stragetys) {
if (strategy.accept(actionId)) {
strategy.execute();
break;
}
}
这个的缺点是要遍历list,其实性能开销并不会太大。
也可以把这些strategys放到map里,然后直接根据actionId从map中取出并执行。
这是一种实现思路,可能还会有更好的方式。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。