我有一个风格问题。这是我一直以来一直在做的事情,但我不知道为什么,确切地说。
在我使用的大多数语言中,您可以调用一个方法,该方法将一个值作为参数返回给另一个方法:
foo(bar())
这等于
var bar=bar()
foo(bar)
出于某种原因,后者似乎令人讨厌。这是为什么?第一个更易读、更高效还是更干净?
我有一个风格问题。这是我一直以来一直在做的事情,但我不知道为什么,确切地说。
在我使用的大多数语言中,您可以调用一个方法,该方法将一个值作为参数返回给另一个方法:
foo(bar())
这等于
var bar=bar()
foo(bar)
出于某种原因,后者似乎令人讨厌。这是为什么?第一个更易读、更高效还是更干净?
它不一定相等。
foo(bar());
表示“调用 bar 并将其参数传递给 foo”
var retBar = bar();
foo(retBar);
意思是“初始化 retBar,然后调用 bar,将返回的任何内容存储到 retBar,然后以 retBar 作为其参数调用 foo。”
根据声明变量的成本,后者可能具有更大的内存占用或运行时间更慢。
但实际上,它是一个完整的额外语句——实际上是两个额外语句,具体取决于语言——它使您的代码不那么干净。我唯一一次使用方法 #2 是当我有理由使用bar()
' 值时,即使只是在调试器中查看它。
我觉得它融合了你所说的一切。前一种结构是有利的,因为
一种。它阻止声明一个额外的变量来实现相同的结果。
湾。它更干净,因为它更容易阅读/理解
var accountBalance = sum ( principalAmount + calculateInterest() )
比
var varCalculateInterest = calculateInterest();
var accountBalance = sum ( principalAmount + calculateInterest() )
C。如果您使用递归等功能,您显然会尝试前者。您将需要大量临时变量来存储中间结果。请看下面的例子。
返回连接(快速排序(更少),枢轴',快速排序(更大))