鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

合理设置返回值或无返回值场景,避免对返回值的冗余检查

【说明】 程序执行过程中,如果期间调用函数的执行结果存在多种可能性(例如成功/失败),一般来说会通过返回值的方式将执行结果携带给调用方,从而保证程序按照预期执行;对于执行结果是确定性的函数,则不应当设置返回值,一旦设置了返回值,调用方需要对返回值进行预期判决,会增加性能开销,相关代码还会对指令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);
    ...
}