考虑以下情况。用户可以输入类似的内容 30D、90D、180D、360D、1M、3M、6M、12M、1Y (D=日,M=月,Y=年)。
我想用以下两种方法计算月数。
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
在方法之外不会改变。我不确定使用什么更合适。
我知道这个方法可以通过使用枚举 Periods
来重构或类似的东西。但我们不在这里讨论这个。
最佳答案
分配给方法参数不是一个好主意(恕我直言,默认情况下它们应该是最终的)。如果您确实想避免额外的变量(并不是说它真的有什么区别),您可以将 return 放在 if 子句中。
但不要将参数用作“自动局部变量”。它可能会导致很难发现错误,并且不会提高您的代码的性能。
关于java - "exploit"java 按值调用是否明智,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36495861/