gpt4 book ai didi

java - 是否传递参数

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

假设您有一些具有某些属性的类(class)。这个类有一个私有(private)方法,它根据参数计算一些东西。例如(Java):

public class Foo {
private Lorem c1;
private Ipsun c2;
//...
private Justo c12;

private Double selfExplanatoryMethodName(){
//This method uses c1, c3 and c4
}
}

将方法的标题设置为以下形式是否是更好的做法:
private Double selfExplanatoryMethodName(Lorem c1, Amet c3, Sit c4) {/*...*/}

假设此方法是一种哈希方法,了解它使用哪些参数来生成哈希可能会很有用。

那么,您认为这是一个好的做法吗?为什么?

最佳答案

参数化还是不参数化是个问题......

...当它只是一个接受输入并返回输出而不依赖于对象状态的函数时:因此,您必须有一个接受参数并执行一些魔法的方法,并且返回一个值...一个真正的函数——你应该使用参数。你的方法是一个黑匣子。 Java 为此类方法提供了static 关键字,对于仅依赖于参数的任务,您应该使用静态方法。这些情况应该有参数化方法。示例:

 public static String encodeString(String input, String format)

...当它是一个仅处理对象状态并返回值的函数时:类似于hashcode方法。您不应该永远传递参数...该方法应该是一个实例方法...它应该使用实例字段来发挥作用。这是一个例子:

 public String toString(){
return this.attr1 +", " + this.attr2; //<-- see I haven't passed attr1, attr2
}

...当需要一些外部输入和一些状态属性时:就像您有一个基于外部输入对状态对象进行操作以返回结果的方法。仅传递外部所需的参数。例如:

 public String toFormat(String format){
if("json".equals(format) //<-- this is external agent.
return new JSONObject(this).toString();
else
return this.attr1 +", " + this.attr2; //<-- see I haven't passed attr1, attr2

}

所以,这取决于你在做什么。

<小时/>

编辑1:(回答评论)

来到为什么?

这是为了最大限度地减少冗余。这就是为什么应将上述几点作为经验法则: 不要创建不必要的对象;不要使参数列表变得臃肿

我提到了在哪种场景下有哪些良好实践。您权衡自己的情况并决定使用什么。所以,如果你有一个方法说,

int add(int a, int b){returns a+b;} 

传递 a 和 b 并将此方法设置为静态方法是一种很好的做法。但是执行 new Additor(a, b).add(); 其中

public int add(){return this.a + this.b;} 

这不是一个好主意。

关于java - 是否传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11862503/

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