如何更简洁地编写这段含取反逻辑的条件返回代码?
更优的代码重构方案
你的现有写法有个可优化的点:每次执行都会根据isTrue的分支调用一次runAlgorithm(),如果这个函数是计算密集型、存在副作用(比如修改外部变量、发起网络请求)或者执行成本较高,虽然当前分支只会触发一次调用,但通过提前缓存结果的方式,能让逻辑更简洁,还能避免后续代码修改时不小心引入重复执行的风险。
推荐的优化写法如下:
方案1:缓存结果后用条件判断(最直观)
const result = runAlgorithm(); return isTrue ? result : !result;
或者用if-else的形式:
const result = runAlgorithm(); if (isTrue) { return result; } else { return !result; }
方案2:用逻辑表达式简化(更简洁紧凑)
利用布尔运算的特性,可以进一步简化成一行,且逻辑完全等价于你的原代码:
return isTrue === runAlgorithm();
逻辑验证(和原代码完全匹配):
- 当
isTrue = true,返回runAlgorithm()的结果,和原if分支逻辑一致; - 当
isTrue = false,返回runAlgorithm()结果取反后的布尔值(因为false === result等价于!result),和原else分支逻辑一致。
这个写法既保证runAlgorithm()只执行一次,又做到了代码最精简,是最优的实现方式。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

