如果语句之后,返回vs无能为力



这两个函数在代码执行方面有什么区别。结果是相同的,但是编译器会优化两者都能到同一输出的组件吗?

void some_func() 
{
   if (!something)
      return;
   //rest of code
}
void other_func() 
{
   if (something) {
      //rest of code
   }
}

它取决于编译器以精确翻译汇编指令,但是它很可能完全相同和/或如此忽略不计。

这通常用于任何类型的速度优化尝试的可读性。

前者是首选。它更简单,更可读。

void foo()
{
    if( error_condition)
    {
       // Handle error
       return;
    }
    // Carry on
    if( other_error_condition)
    {
       // Handle error
       return;
    }
    // Carry on
    // Done
}

有人认为,任何功能都应该有一个回报,但这在很长一段时间内都不是最好的做法,并且从集会日开始就留下了一个神话。

许多嵌套丑陋的替代结果

void foo()
{
    if( !error_condition)
    {
       // Do stuff
       if ( !other_error_condition )
       {
           // Do other stuff
       }
       else           
       {
            // Handle error
       }
    }
    else
    {
        // Handle error
    } 
    // Done
}

最新更新