枚举或整数表示支付频率
Enum or int to represent payment frequency
所以我得到了以下 class..
public abstract class Insurance {
private int yearlyPremium;
...
}
我想要一个字段来表示一个人必须多久支付一次保险费,可以是枚举类型,也可以是整数类型。
这是我对枚举的想法:
public enum PaymentFrequency {
MONTHLY("Monthly", 12),
QUARTERLY("Quarterly", 4),
SEMIANNUALLY("Semiannually", 2),
ANNUALLY("Annually", 1);
private String name;
private int paymentsPerYear;
PaymentFrequency(String name, int paymentsPerYear) {
this.name = name;
this.paymentsPerYear = paymentsPerYear;
}
public String getName() {
return name;
}
public int getPaymentsPerYear() {
return paymentsPerYear;
}
}
枚举的另一个优点是我可以使用它的 values
(静态)和 getName
方法为用户界面生成下拉菜单,这样如果我添加一个新的 PaymentFrequency
, 我将不必更改下拉菜单。
这是枚举的工作,还是我在这里过于复杂了?该字段可以用一个简单的 int 表示,但缺点是我必须检查它是否是有效数字,因为我只想要 1 到 12(包括两者)之间的值,以便 12 % n == 0
.
错误代码的标志之一是幻数。出现在您的代码中的数字,但没有记录为什么数字在那里(为什么这是 12 而不是 11?)。
枚举几乎总是比您需要的多,但它们几乎总是正确的选择。如果您需要为此 class 添加功能,那真的很容易做到。创建一个方法 public Date getNextPaymentDate(Date lastPaymentDate)
真的很容易。
拥有一个易于扩展的 class 让您的代码更易于维护。
所以我得到了以下 class..
public abstract class Insurance {
private int yearlyPremium;
...
}
我想要一个字段来表示一个人必须多久支付一次保险费,可以是枚举类型,也可以是整数类型。
这是我对枚举的想法:
public enum PaymentFrequency {
MONTHLY("Monthly", 12),
QUARTERLY("Quarterly", 4),
SEMIANNUALLY("Semiannually", 2),
ANNUALLY("Annually", 1);
private String name;
private int paymentsPerYear;
PaymentFrequency(String name, int paymentsPerYear) {
this.name = name;
this.paymentsPerYear = paymentsPerYear;
}
public String getName() {
return name;
}
public int getPaymentsPerYear() {
return paymentsPerYear;
}
}
枚举的另一个优点是我可以使用它的 values
(静态)和 getName
方法为用户界面生成下拉菜单,这样如果我添加一个新的 PaymentFrequency
, 我将不必更改下拉菜单。
这是枚举的工作,还是我在这里过于复杂了?该字段可以用一个简单的 int 表示,但缺点是我必须检查它是否是有效数字,因为我只想要 1 到 12(包括两者)之间的值,以便 12 % n == 0
.
错误代码的标志之一是幻数。出现在您的代码中的数字,但没有记录为什么数字在那里(为什么这是 12 而不是 11?)。
枚举几乎总是比您需要的多,但它们几乎总是正确的选择。如果您需要为此 class 添加功能,那真的很容易做到。创建一个方法 public Date getNextPaymentDate(Date lastPaymentDate)
真的很容易。
拥有一个易于扩展的 class 让您的代码更易于维护。