论证传递公约 - 提前宣布论点

时间:2014-08-10 17:29:00

标签: arguments conventions calling-convention

这些是正确的方法?还是有更好的第三选择?

public Thing foo1(){
    String argument1 = "Argument #1";
    String argument2 = "Argument #2";
    Point argument3 = new Point(0,0);
    Thing something = new Thing(argument1, argument2, argument3);
    return something;
}

public Thing foo2(){
    Thing something = new Thing("Argument #1", "Argument #2", new Point(0,0));
    return something;
}

注意:我在上面的示例中使用了Java,但我并不是在寻找特定于语言的答案。

1 个答案:

答案 0 :(得分:0)

两者都是正确的。 这是一个品味问题。

每当没有很多参数时,我倾向于使用第二种解决方案,其含义很容易识别,没有好的和有意义的变量名。

我甚至更喜欢第三种方式:

return new Thing("Argument #1", "Argument #2", new Point(0,0));

此外,在某些语言中,如Scala,您可以在调用中提供参数的名称:

new Thing(arg1 = "Argument #1", arg2 = "Argument #2", argPoint = new Point(0,0));

非常好的方式,此外,您可以重新排序参数而不会影响调用。