我敢打赌这个问题以前曾被问到,但我真的找不到我要寻找的东西,所以请提前对不起:(
这之间有区别(从编程上讲或架空说话(:
var data = GetProducts();
GetAllData(data);
和此:
GetAllData(GetProducts());
两种方法的利弊是什么?是否有更优雅/正确的实现方法(例如func<>(?
预先感谢rotem
以两行进行调试使其更容易进行调试,因为您可以在第二行上折断并观察第一行分配的值。
编译器无论如何都会将它们都优化到同一CIL中,因此这不是效率的问题。这都是偏爱的问题。
没有功能差异,当代码转换为机器语言(或JVM字节代码或其他任何内容(时,它将导致或多或少相同的低级代码。
主要区别在于(a(美学和(b(代码的可维护性。关于美学,有些人可能认为第二种形式更漂亮。这主要是个人选择,但我认为,如果表达不像GetProducts()
那样简单,但是很长(例如GetContext().GetProductService().GetProductsFor(GetContext().GetCurrentUser())
,然后将其分成两行,将其分成两行,则更可读取。
关于可维护性,我认为您会发现,更少的变量总是更好地适用于将来的维护。您不太可能遇到与副作用或更改假设有关的错误。在其他语言中,您可以使用const
或final
之类的构造来使用编译器来防止代码腐烂,但我仍然认为具有更少的代码行是更干净的。
希望这会有所帮助!