You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在C语言if条件中直接调用函数是否属于不良编程实践?

结论

你当前的写法完全符合C语言的常规编码规范,不属于不良编程实践,不需要刻意把返回值先赋值给bool变量再做判断。


具体适用场景说明

  • 对于这种单次使用、功能单一的校验类纯函数(你的check_operation仅做字符串对比,没有修改任何外部数据、没有副作用),直接写在if条件内反而更简洁,代码逻辑连贯,读者一眼就能看懂「如果操作校验不通过就走错误分支」的意图,不会有多余的临时变量增加阅读负担。
  • 只有出现以下几种情况时,才建议先把返回值存储到bool变量中再使用:
    1. 该返回值后续需要多次复用:避免重复调用函数浪费性能,也能规避函数有副作用时多次调用结果不一致的问题
    2. 判断逻辑组合了多个条件:比如你同时要校验操作合法性、参数数量、用户权限,把各个函数的返回值赋值给is_operation_valid、is_arg_count_valid、has_user_permission这类语义明确的变量,再组合到if条件中,可读性会比把多个函数调用全塞进if括号里高很多
    3. 调试需要:存储到变量后可以直接在判断前打断点查看具体返回值,不需要进入函数内部单步调试

参考代码示例(需要存变量的场景)

// 多个条件组合的场景,存变量可读性更高
bool is_op_valid = check_operation(argv[1], operations_arr);
bool is_arg_valid = check_arg_count(argc);
bool has_perm = check_user_perm(get_current_uid());

if (!is_op_valid || !is_arg_valid || !has_perm) {
    error_message();
    return 1;
}

内容的提问来源于stack exchange,提问作者Luis Tamarez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:48:02