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

