合理设置返回值或无返回值场景,避免对返回值的冗余检查
【说明】 程序执行过程中,如果期间调用函数的执行结果存在多种可能性(例如成功/失败),一般来说会通过返回值的方式将执行结果携带给调用方,从而保证程序按照预期执行;对于执行结果是确定性的函数,则不应当设置返回值,一旦设置了返回值,调用方需要对返回值进行预期判决,会增加性能开销,相关代码还会对指令Cache造成冲击。
当然,在实际软件开发过程的函数设计是一个复杂的权衡过程,例如,为了匹配多种状态或策略(例如状态机回调、或场景策略定义)下的函数实现,需要优先考虑函数接口定义上的一致性。
【原理】 通过合理的函数设计减少冗余语句。
【注意事项】 不涉及
【案例】
优化前:
VOS_UINT32 FuncA(int a)
{
DoSth();
return VOS_OK;
}
VOS_UINT32 funcB(int b)
{
VOS_UINT32 ret;
ret = FuncA(a);
if (ret != VOS_OK) {
...
TraceLog(...);
}
...
}
优化后:
执行结果确定的函数,不设置返回值:
VOS_VOID FuncA(int a)
{
DoSth();
}
VOS_UINT32 FuncB(int b)
{
VOS_UINT32 ret;
FuncA(a);
...
}
父主题: 函数使用