Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 链接方法调用还是引入中间变量更好?_Java_Class_Variables_Methods_Getter - Fatal编程技术网

Java 链接方法调用还是引入中间变量更好?

Java 链接方法调用还是引入中间变量更好?,java,class,variables,methods,getter,Java,Class,Variables,Methods,Getter,例如,2个方法调用: myMethod(getHtmlFileName()); 或 在第一种情况下排除较少的键入,哪种方法更好?第二种方法将帮助您调试getHtmlFileName()的返回值,但除此之外,从绝对意义上讲,两种方法都不比另一种好。我想说,这是一个偏好的问题,也许是背景的问题。在这种特殊情况下,我会选择第一种方法,但如果您将几种方法结合起来,我会选择第二种方法,以确保可读性,例如: String first = firstMethod(); String second = sec

例如,2个方法调用:

myMethod(getHtmlFileName());


在第一种情况下排除较少的键入,哪种方法更好?

第二种方法将帮助您调试getHtmlFileName()的返回值,但除此之外,从绝对意义上讲,两种方法都不比另一种好。我想说,这是一个偏好的问题,也许是背景的问题。在这种特殊情况下,我会选择第一种方法,但如果您将几种方法结合起来,我会选择第二种方法,以确保可读性,例如:

String first = firstMethod();
String second = secondMethod(first);
String third = thirdMethod(second);
而不是

thirdMethod(secondMethod(firstMethod()));

编辑:正如其他人所指出的,如果要在多个位置使用该值,那么显然应该使用第二种方法,并保留对该值的引用以供以后使用。

如果要在多个位置使用方法的返回值,将其存储在变量中并在代码中使用该变量可能比每次调用该方法更实用、可读且易于调试:

String htmlFileName = getHtmlFileName();
myMethod(htmlFileName);
....
myMethod(htmlFileName + "...");

这可能取决于上下文。 如果要在代码块中的其他位置使用htmlFileName变量,您可能需要像存储局部变量那样存储它(特别是对于一些繁重的方法调用):

如果是一次性的,请致电

myMethod(getHtmlFileName());

可能更优雅、更易于阅读。

如果以后使用getHtmlFileName()返回值,并且返回值是固定的,则需要使用第一种形式,即分配一个局部变量并重用它,从而避免重复调用/对象创建


否则(例如,如果只调用一次getHtmlFileName方法,则希望使用更简洁的第一种形式,并避免无用的局部变量赋值,但如果仍使用第二种形式(例如用于调试),则不会造成实际伤害).

-1您完全是在工作,问题是哪种方法是直接将ValueObject的属性作为参数传递给方法,还是将属性的值分配给变量,然后作为参数传递给方法的最佳方法。另外,请检查我在您的评论下面的评论。正确判断答案并删除它。@Damodar这是一个非常混乱的句子,我不知道怎么读。你知道这是Java,对象是通过引用传递的,对吗?上面的问题完全是关于性能的,所以我们应该根据逻辑来考虑对象的创建问题。这个问题没有提到性能-“更好”可以引用任何内容,例如可读性。正如人们所指出的,这是一个上下文和您尝试执行的操作的问题。如果您在其他地方需要该值,通常最好保留对该值的引用,而不是重复调用该方法。正如我在另一条注释中指出的,方法返回的对象是在该方法中创建的,re添加:如果getHtmlFileName()是一个资源密集型方法调用,那么您将把结果保存在一个变量中。
String htmlFileName=getHtmlFileName();
myMethod(htmlFileName);
myMethod(getHtmlFileName());