这两个函数在代码执行方面有什么区别。结果是一样的,但是编译器会将两者优化到相同的输出汇编吗?
void some_func()
{
if (!something)
return;
//rest of code
}
void other_func()
{
if (something) {
//rest of code
}
}
答案 0 :(得分:3)
这取决于编译器对汇编指令的精确转换,但它很可能完全相同和/或可忽略不计,无关紧要。
这通常用于任何类型的速度优化尝试的可读性。
答案 1 :(得分:0)
前者是首选。它更简单,更易读。
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
}