是否更好地检查null并返回或检查非null并继续?

时间:2012-10-26 18:16:38

标签: null null-check

鉴于以下基本课程:


public class MyClass
{
    private object m_memberVariable;

    public MyClass()
    {
       this.m_memberVariable = new object();
    }
}

以下哪种test方法的实现是更好的编程实践?


private void test()
{
   if(this.m_memberVariable == null)
   {
       return;
   }
   System.Diagnostics.Debug.Write(this.m_memberVariable.ToString());
}
要么

private void test()
{
   if(this.m_memberVariable != null)
   {
       System.Diagnostics.Debug.Write(this.m_memberVariable.ToString());
   }
}

大约10年前,当试图从一位教授那里回忆起来时,if语句的最佳实践是使条件可能更频繁而不是假(后者)。然而,最近我一直在使用ReSharper的试验,他们的建议是前者。 m_memberVariable成员在类的实例化时初始化,并且在类的生命周期中可能非空。

1 个答案:

答案 0 :(得分:0)

我总是尝试检查非null并继续 - 那么你只有一个退出点来自函数,所以退出例程只需要放在二进制代码中一次,这会导致较小的结果。但我想现代编译器无论如何都会优化它,谁知道呢。