如何进一步优化下面的if判断,大神帮帮我
private String handlerRepoTradeVariety(BigDecimal days) {
if (days.compareTo(BigDecimal.valueOf(1d)) == 0) {
return DataDictionary.PLEDGE_REPO_TRADE_VARIETY_OR001;
}
if (days.compareTo(BigDecimal.valueOf(1d)) > 0
&& days.compareTo(BigDecimal.valueOf(7d)) <= 0) {
return DataDictionary.PLEDGE_REPO_TRADE_VARIETY_OR007;
}
if (days.compareTo(BigDecimal.valueOf(7d)) > 0
&& days.compareTo(BigDecimal.valueOf(14d)) <= 0) {
return DataDictionary.PLEDGE_REPO_TRADE_VARIETY_OR014;
}
if (days.compareTo(BigDecimal.valueOf(14d)) > 0
&& days.compareTo(BigDecimal.valueOf(21d)) <= 0) {
return DataDictionary.PLEDGE_REPO_TRADE_VARIETY_OR021;
}
if (days.compareTo(BigDecimal.valueOf(21d)) > 0
&& days.compareTo(BigDecimal.valueOf(30d)) <= 0) {
return DataDictionary.PLEDGE_REPO_TRADE_VARIETY_OR1M;
}
if (days.compareTo(BigDecimal.valueOf(30)) > 0
&& days.compareTo(BigDecimal.valueOf(60)) <= 0) {
return DataDictionary.PLEDGE_REPO_TRADE_VARIETY_OR2M;
}
if (days.compareTo(BigDecimal.valueOf(60)) > 0
&& days.compareTo(BigDecimal.valueOf(90)) <= 0) {
return DataDictionary.PLEDGE_REPO_TRADE_VARIETY_OR3M;
}
return StringUtils.EMPTY;
}
1、if()中的判断代码建议封装到独立的方法中,通过合适的命名,便于阅读;
2、考虑使用设计模式优化,比如简单工厂模式
从 if 的内容来看,是要判断数值范围的,这么来看,没有可优化的空间了。
可适当添加空行,对每个 if 分支加上注释,增加代码的可读性。
使用if..else if或者switch,判断时只判断小于某个数就OK
if (num == 0) {
...
} else if (num <= 7) {
...
} else if (num <= 14) {
...
} else if (num <= 21) {
...
}
了解一下责任链模式。,,,。。。。
使用 if ,else if ,else 进行判断吧;
原先的方式,是所有的判断都要去执行一次,在不考虑return 返回就截止的情况
以多态封装为荣,以if-else为耻