0

我有一个风格问题。这是我一直以来一直在做的事情,但我不知道为什么,确切地说。

在我使用的大多数语言中,您可以调用一个方法,该方法将一个值作为参数返回给另一个方法:

foo(bar())

这等于

var bar=bar()
foo(bar)

出于某种原因,后者似乎令人讨厌。这是为什么?第一个更易读、更高效还是更干净?

4

2 回答 2

1

它不一定相等。

foo(bar());

表示“调用 bar 并将其参数传递给 foo”

var retBar = bar();
foo(retBar);

意思是“初始化 retBar,然后调用 bar,将返回的任何内容存储到 retBar,然后以 retBar 作为其参数调用 foo。”

根据声明变量的成本,后者可能具有更大的内存占用或运行时间更慢。

但实际上,它是一个完整的额外语句——实际上是两个额外语句,具体取决于语言——它使您的代码不那么干净。我唯一一次使用方法 #2 是当我有理由使用bar()' 值时,即使只是在调试器中查看它。

于 2013-05-31T16:32:25.887 回答
0

我觉得它融合了你所说的一切。前一种结构是有利的,因为

一种。它阻止声明一个额外的变量来实现相同的结果。

湾。它更干净,因为它更容易阅读/理解

var accountBalance = sum ( principalAmount + calculateInterest() )

var varCalculateInterest = calculateInterest();

var accountBalance = sum ( principalAmount + calculateInterest() )

C。如果您使用递归等功能,您显然会尝试前者。您将需要大量临时变量来存储中间结果。请看下面的例子。

返回连接(快速排序(更少),枢轴',快速排序(更大))

于 2013-05-31T16:38:18.540 回答