gpt4 book ai didi

java - 哪种实现更好(DRY 和 KISS)

转载 作者:行者123 更新时间:2023-11-30 05:45:03 25 4
gpt4 key购买 nike

下面我有返回月份名称的方法。在第一个实现中,我使用 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];
}

最佳答案

我发现第二个更容易阅读。它更短,并且带有前提条件检查,可以立即告诉您允许哪些值。在第一个示例中,您必须浏览整个方法主体才能理解这一点。

综上所述,该方法应该使用 java.time.Month 编写如:

public String getMonthNameNew(int month) {
return Month.of(month).getDisplayName(TextStyle.FULL, Locale.ENGLISH);
}

关于java - 哪种实现更好(DRY 和 KISS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55005340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com