在以下代码块中获取冗余的空检查错误。有人能帮我重构一下吗:
private Date pickRecent(Date d1, Date d2, Date d3, Date crd) {
logger.debug("d1: " + d1 + " d2: " + d2 + " d3: " + d3 + " crd: " + crd);
// all null
if (d1 == null && d2 == null && d3 == null) return crd;
logger.debug("through all");
// two null
if (d1 == null && d2 == null) return d3;
if (d1 == null && d3 == null) return d2;
if (d2 == null && d3 == null) return d1;
logger.debug("through two");
// one null
if (d1 == null) if (d2.after(d3)) return d2; else return d3;
if (d2 == null) if (d1.after(d3)) return d1; else return d3;
if (d3 == null) if (d1.after(d2)) return d1; else return d2;
logger.debug("through one");
// none null
if (d1.after(d2) && d1.after(d3)) return d1;
if (d2.after(d1) && d2.after(d3)) return d2;
if (d3.after(d1) && d3.after(d2)) return d3;
if (d1.equals(d2) && d1.equals(d3)) return d1;
logger.debug("through none");
return null;
}
2条答案
按热度按时间pobjuy321#
这里有一个可能的解决方案。。。
输出:
nwo49xxi2#