我有这段代码:
// ...
if (result[1] / (abs ? res[0] : 1 > highest) {
highest = result[1] / (abs ? res[0] : 1);
}
我想知道它是否应该创建一个变量以避免重复相同的计算:
// ...
double temp = result[1] / (abs ? res[0] : 1;
if (temp > highest) highest = temp;
哪个是最好的解决方案,而且一般情况下使用第一段代码和第二段时更好?
答案 0 :(得分:3)
第二个更好:
1)它具有更好的性能。
2)它增加了代码的可读性。
3)当计算只发生一次时,它更容易调试。
4)第一个选项容易出错,因为复制计算时可能会出错。
答案 1 :(得分:2)
主要是为了避免重复相同的代码而消除重复计算;为了更好地使用CPU,重复相同的计算是遥远的第二步。
因此,绝对值得创建一个临时变量。
但是,在这种情况下,您可以使用Math.max
:
highest = Math.max(highest, result[1] / (abs ? res[0] : 1));
此处,b
的第二个参数max(double a, double b)
用于代替临时变量。 expression参数的值设置在调用站点的参数变量中,并在max
实现中用于决定返回值,最终决定赋值。