将函数作为参数与设置变量并传递



我敢打赌这个问题以前曾被问到,但我真的找不到我要寻找的东西,所以请提前对不起:(

这之间有区别(从编程上讲或架空说话(:

 var data = GetProducts();
 GetAllData(data);

和此:

GetAllData(GetProducts());

两种方法的利弊是什么?是否有更优雅/正确的实现方法(例如func<>(?

预先感谢rotem

以两行进行调试使其更容易进行调试,因为您可以在第二行上折断并观察第一行分配的值。

编译器无论如何都会将它们都优化到同一CIL中,因此这不是效率的问题。这都是偏爱的问题。

没有功能差异,当代码转换为机器语言(或JVM字节代码或其他任何内容(时,它将导致或多或少相同的低级代码。

主要区别在于(a(美学和(b(代码的可维护性。关于美学,有些人可能认为第二种形式更漂亮。这主要是个人选择,但我认为,如果表达不像GetProducts()那样简单,但是很长(例如GetContext().GetProductService().GetProductsFor(GetContext().GetCurrentUser()),然后将其分成两行,将其分成两行,则更可读取。

关于可维护性,我认为您会发现,更少的变量总是更好地适用于将来的维护。您不太可能遇到与副作用或更改假设有关的错误。在其他语言中,您可以使用constfinal之类的构造来使用编译器来防止代码腐烂,但我仍然认为具有更少的代码行是更干净的。

希望这会有所帮助!

相关内容

  • 没有找到相关文章

最新更新