Joh*_*itb 4 c++ enumeration boolean
在我的编译器项目中,我有一个类似的枚举
enum Result {
No,
Maybe,
Yes
};
Run Code Online (Sandbox Code Playgroud)
我No
明确地把它放在第一个位置,这样我就可以依赖于布尔值false
.如果我的编译器不确定某些东西,并且必须等待事实直到运行时,它的分析函数将返回Maybe
.用过像
if(!typesEqual(t1, t2)) {
diagnose(types_unequal) << t1 << t2;
}
Run Code Online (Sandbox Code Playgroud)
我想知道你或你的公司是否认为不No
明确的比较风格
if(typesEqual(t1, t2) == No) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
明确地比较对我来说似乎很啰嗦,但依赖于隐式布尔转换会让我感到内疚.你以前有这种感觉,你是如何处理的?
我也对它感到内疚,因为通过阅读上面的代码你会期望布尔typesEqual()
表达式返回Maybe
什么?它会回归真的吗?也许!它会返回虚假吗?也许!我们不知道 - 这就是枚举的全部内容.这就是明确比较的原因No
,即使它更冗长.