一件小事,但我很乐意听到其他人的想法.
以下2个代码段中哪一个是最佳编程实践?
var results = GetResults();
SendResults(results);
Run Code Online (Sandbox Code Playgroud)
要么:
SendResults(GetResults());
Run Code Online (Sandbox Code Playgroud)
我认为第一个选项更好,但另一方面,选项2是更少的代码来写(和读).你怎么看?
我知道这是一个非常基本的问题,但仍然......
我经常去的第一选择,因为这样我可以的调用之间插入一个断点GetResults
和SendResults
.
如果代码位于方法的中间,通常不是那么大的交易,但如果它是以下形式:
return Process(GetData());
Run Code Online (Sandbox Code Playgroud)
调用GetData
和Process
调用的返回值都不容易看到.除非我们讨论的是没有副作用且结果明显的框架函数(例如int.Parse),我更喜欢这种格式:
var data = GetData();
var result = Process(data);
return result;
Run Code Online (Sandbox Code Playgroud)
这个
var results = GetResults();
SendResults(results);
Run Code Online (Sandbox Code Playgroud)
更好,因为它是可调试的...尝试插入断点SendResults(results)
并观察结果的值。
这非常重要,以至于在下一版本的Visual Studio(2013年)中, 他们添加了一种查看函数返回值的方法(例如,参见此处)
通过此新功能,当开发人员在调试会话中移步或退出某个功能时,您可以检查该功能的返回值。当返回值未存储在局部变量中时,此功能特别有用。考虑以下嵌套函数示例Foo(Bar());。在此示例中,当您越过该行时,现在可以检查Bar和Foo的返回值。
从编译的角度来看,它们通常是相同的。IL级别的唯一区别是,堆栈中的插槽具有一些元信息,其名称为变量(results
)或为无名。