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