我有一个方法
myMethod(int a, String b)
一直很好。但是,现在我需要它在参数 a 具有特定值时执行一些额外的工作。在这种情况下,需要将附加参数传递给参数。
我应该只将方法签名更改为
myMethod(int a, String b, int newParameter)
并在不需要此参数的所有情况下传入空值?
也许留下旧方法签名,并且使用null参数调用新方法将是最方便的,因此我不必更改代码中的任何其他内容,例如
myMethod(int a, String b) { return myMethod(a, b, null); }
或者我需要以不同的方式看待它吗?
所有评论都很有意义!
更新
myMethod(int a, String b)
做了很多事情,包括调用
anotherMethod()
包含 newParameter 时需要发生的唯一区别是anotherMethod被调用如此
anotherMethod(newParameter)
答案 0 :(得分:1)
只需重载可以使用其他参数的方法myMethod
,并在需要时调用特定的方法。只需调用您需要的方法即可。我认为没有必要从方法到另一个重载方法进行间接调用。
myMethod(int a, String b) { return myMethod(a, b, null); }
您可以在这里调用重载方法。现在只需更改代码就可以调用必要的方法,否则当程序变大时,程序就变得一团糟。
答案 1 :(得分:0)
如果调用方法知道何时需要额外参数,那么是的,我倾向于第二种方法。你总是在构造函数中看到这个。或者,如果myMethod可以分解为它的成分,你可以根据'a'的值调用appropriaet组成部分。
答案 2 :(得分:0)
恕我直言,我认为你走在正确的轨道上。我通常会保留旧方法签名并使用其他参数调用方法。如果你看一下公共代码,你会发现使用了相同的技术。
答案 3 :(得分:0)
如果你的功能需要做两件事,那么你应该把它分成两个独立的功能,是的。我认为这比使用一个带有“行为标志”类型参数的函数要清楚得多。
答案 4 :(得分:0)
你为什么不这样做?
myMethod(int a, String b) {
AnotherMethod();
}
myMethod(int a, String b, int newParameter) {
AnotherMethod(newParameter);
}
替代:
myMethod(int a, String b, int newParameter) {
if (newParameter != -1)
{
AnotherMethod(newParameter);
} else {
AnotherMethod();
}
并且-1为您永远不会使用的值,表示“null”
答案 5 :(得分:0)
就个人而言,我认为保留旧方法签名,并使用null参数调用新方法将是更好的选择。我只会编写能够正确处理“null”情况的智能代码。
代码中的冗余越少,维护就越容易。想想那样。
答案 6 :(得分:0)
重载最好这样做:
/* Some value that is most common to use in your program. */
private final int DEFAULT_PARAM_VALUE = 0;
public void myMethod (int a, String b) {
myMethod (a, b, DEFAULT_PARAM_VALUE);
public void myMethod (int a, String b, int newParameter) {
/* do all your main stuff here */
anotherMethod (newParameter);
}
public void anotherMethod (int param) {
/* do other stuff */
}