参数" y"在某些情况下(当x> 10时),这里完全被忽略了:
public doTask(int x, int y) {
if (x > 10) {
return x * 10;
}
else {
return (x * 10) + y
}
}
我认为拥有一个可以忽略其参数的方法会产生误导。我怎么能重写上面的代码来避免这个问题?
答案 0 :(得分:2)
您可以使用return x * 10 + y * (x > 10 ? 0 : 1);
但我并没有真正看到你现在所拥有的问题,而我的替代方案可能对某些读者不太清楚。
在某些情况下,数学编程中存在大量情况,变量无效。例如,幅度函数A * Math.sin(omega * t)
偶尔不会“需要”A
。
对您的功能进行适当的单元测试可以清除任何错误。
答案 1 :(得分:2)
如果需要,您可以使用Java 8的Optional
类型并在其中传递y
。但我强烈认为那将是一种矫枉过正。 y
正在至少一个代码流中使用,因此在方法签名中接受它是完全有效的。
答案 2 :(得分:0)
你正在使用if else statemenet到底应该如何使用它,是技术上你可以使用Java 8标准编码使用Optional(https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html)但是对于上面的例子来说不仅仅是矫枉过正。你所拥有的是完全可以接受的并且最有意义。
答案 3 :(得分:0)
这个怎么样?
public doTask(int x, int y) {
return x * 10 + (x > 10 ? 0 : y);
}