关于从方法/函数返回的性能/风格问题

时间:2009-04-15 20:05:14

标签: performance language-agnostic coding-style

我在一个正在研究的项目中找到了这样的代码

public SqlDataReader SomeMethod(int someParam)
{
      // ... some code goes here
      SqlDataReader dataReader = m_command.ExecuteReader(CommandBehavior.CloseConnection);
      return dataReader;
}

我想知道什么是更好的,原始的或下面的

public SqlDataReader SomeMethod(int someParam)
{
      // ... some code goes here
      return  m_command.ExecuteReader(CommandBehavior.CloseConnection);
}

创建变量然后返回它而不是仅仅返回创建的读取器有什么好处吗?我认为不,因为它只是一个参考。我给出的例子是我发现的但它可以是任何变量类型。我能想到的一件事是在调试过程中,看看变量中的内容可能很好。

有人愿意贡献2美分吗?

2 个答案:

答案 0 :(得分:2)

调试可能是最好的理由。使用第一种方式,例如更容易在返回之前检查dataReader是否为null

正如你所说,确实不应该有性能差异。如果经常调用此方法,则JIT编译器(如果已启用)很可能会优化局部变量。

答案 1 :(得分:1)

任何半合适的编译器都会优化第一个示例,使得dataReader不需要存储在临时变量中。换句话说,两个例子应该具有完全相同的效率。

就个人而言,我更喜欢第二个(较短的)例子,因为将这一行分成两行并不能简化阅读。