我有一个风格问题。这是我一直以来一直在做的事情,但我无法弄明白为什么。
在我使用过的大多数语言中,你可以调用一个方法,将一个值作为参数返回给另一个方法:
foo(bar())
等于
var bar=bar()
foo(bar)
出于某种原因,后者似乎令人讨厌。这是为什么?首先是更易读,更有效还是更干净?
答案 0 :(得分:1)
它不一定相等。
foo(bar());
表示“调用bar并将其参数传递给foo”
var retBar = bar();
foo(retBar);
表示“初始化retBar,然后调用bar,存储它返回到retBar的任何内容,然后使用retBar作为其argumnet调用foo。”
根据变量的声明成本,后者可能会有更大的内存占用或更慢的运行时间。
但实际上,这是一个完整的额外声明 - 实际上是两个额外的声明,具体取决于语言 - 并且它会使您的代码不那么干净。方法#2的唯一一次是当我有理由使用bar()
的值时,即使只是在调试器中查看它。
答案 1 :(得分:0)
我觉得它融合了你所说的一切。之前的结构是有利的,因为
一个。它阻止声明一个额外的变量来实现相同的结果。
湾它更清洁,因为它更容易阅读/理解
var accountBalance = sum(principalAmount + calculateInterest())
大于
var varCalculateInterest = calculateInterest();
var accountBalance = sum(principalAmount + calculateInterest())
℃。如果你使用像递归这样的功能,你显然会尝试前者。您将需要许多临时变量来存储中间结果。请参阅下面的示例。
return concatenate(quicksort(less),pivot',quicksort(更大))