【发布时间】:2019-03-05 14:41:43
【问题描述】:
下面我有返回月份名称的方法。在第一个实现中,我使用 switch/case,这个方法更长,验证在最后一行。在第二个中,我在第一行进行验证,而不是 switch/case 我声明了带有月份名称的表。
当我想到 KISS 和 DRY 原则时,哪个更好?
public String getMonthName(int month) {
switch (month) {
case 1:
return "January";
case 2:
return "February";
case 3:
return "March";
case 4:
return "April";
case 5:
return "May";
case 6:
return "June";
case 7:
return "July";
case 8:
return "August";
case 9:
return "September";
case 10:
return "October";
case 11:
return "November";
case 12:
return "December";
default:
throw new IllegalArgumentException("month must be in range 1 to 12");
}
}
或者这个?
public String getMonthNameNew(int month) {
if ((month < 1) || (month > 12)) throw new IllegalArgumentException("month must be in range 1 to 12");
String[] months = {
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
};
return months[month - 1];
}
【问题讨论】:
-
Imo,第二个 - 我会朝着限制该方法的回报的方向前进。
-
您也可以使用
Enum以更少的代码捕获相同的情况 -
@Mike Tung 是完全正确的,而您的第二个每次使用都会创建新的未使用实例,因此效率较低
标签: java dry design-principles