考虑以下的调整。用户可以输入诸如30D,90D,180D,360D,1M,3M,6M,12M,1Y (D =日,M =月,Y =年)之类的东西。“利用”java调用值是明智的
我想用以下两种方法计算月数。
private int getLengthOfPeriodInMonths(Integer lengthOfPeriod, String unitOfPeriod) {
int periodInMonths = lengthOfPeriod;
if ("D".equals(unitOfPeriod)) {
periodInMonths = lengthOfPeriod/30;
} else if ("Y".equals(unitOfPeriod)) {
periodInMonths = lengthOfPeriod * 12;
}
return periodInMonths;
}
private int getLengthOfPeriodInMonths(Integer lengthOfPeriod, String unitOfPeriod) {
if ("D".equals(unitOfPeriod)) {
lengthOfPeriod = lengthOfPeriod/30;
} else if ("Y".equals(unitOfPeriod)) {
lengthOfPeriod = lengthOfPeriod * 12;
}
return lengthOfPeriod;
}
由于Java的可与呼叫按值与作为值传递一个参考lengthOfPeriod
不会外部改变的方法的。我不确定什么更适合使用。
我知道这种方法可以通过使用enum Periods
或类似的东西来重构。但我们不要在此讨论这一点。
你能解释一下什么是应该发生在这里? – SomeJavaGuy
做哪一个让你的代码更清晰。对我来说,他们都很好。 – khelwood
我认为可能有一个一般问题:程序员可能会改变第二种方法中的lengthOfPeriod(通过setter),这可能会改变此方法之外的代码。 – Chris311