我有条件,程序员编码的内部没有(
)
括号...如何正确括起这样丑陋的编码?
if( c_1 && c_2 || c_3 || c_4 && c_5 || c_6 && c_7 || c_8 || c_9 && c_10)
答案 0 :(得分:5)
&&
在C#中的优先级 1 高于||
。这意味着你的表达是有效的:
if ((c_1 && c_2) || c_3 || (c_4 && c_5) || (c_6 && c_7) || c_8 || (c_9 && c_10))
为了进一步提高可读性,我可能会将条件提取到具有有意义名称的局部变量中。例如:
bool recentlyActive = (c_1 && c_2) || c_3;
bool passwordDisabled = (c_4 && c_5) || (c_6 && c_7);
bool userBanned = c_8 || (c_9 && c_10);
if (recentlyActive || passwordDisabled || userBanned)
{
...
}
1 规范中记录了C#中的优先级,但它实际上直接来自语法。我很高兴这个文档,因为每次我想要了解运算符绑定时我都不想阅读语法...