gpt4 book ai didi

java - "exploit"java 按值调用是否明智

转载 作者:行者123 更新时间:2023-12-01 21:40:48 25 4
gpt4 key购买 nike

考虑以下情况。用户可以输入类似的内容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/

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