我打赌之前已经问过这个问题,但我无法找到我想要的东西,所以请原谅我:)
在这之间存在差异(以编程方式说OR开销):
var data = GetProducts();
GetAllData(data);
和此:
GetAllData(GetProducts());
这两种方法的优点和缺点是什么?是否有一种更优雅/正确的方法来实现它(比如Func<>)?
提前谢谢, ROTEM答案 0 :(得分:2)
用两行代码可以更容易地进行调试,因为你可以在第二行中断并观察第一行分配的值。
编译器无论如何都会将它们优化到同一个CIL中,因此这不是效率问题。这都是一个偏好的问题。
答案 1 :(得分:0)
没有功能差异,当代码被翻译成机器语言(或JVM字节代码或其他)时,它将导致或多或少相同的低级代码。
主要区别在于(a)美学和(b)代码的可维护性。关于美学,有些人可能会争辩说第二种形式更漂亮。它主要是个人选择,但我认为,如果表达式不像GetProducts()
那么简单,但是很长(例如GetContext().GetProductService().GetProductsFor(GetContext().GetCurrentUser())
然后将其分解为两行中间变量更具可读性。
关于可维护性,我认为你会发现变量越少对于将来的维护总是更好。您不太可能遇到与副作用或改变假设有关的错误。在其他语言中,您可以使用const
或final
等构造来使用编译器来帮助防止代码腐烂,但我仍然认为使用较少的代码行会更清晰。< / p>
希望这有帮助!