StyleCop - 运营商优先级的CSharp.Maintainability警告

ser*_*0ne 5 .net c# math brackets stylecop

考虑以下算术计算.为简单起见,我尽可能地缩短了它们:

x = y + y * z;

x = y + z - y * z;
Run Code Online (Sandbox Code Playgroud)

没有StyleCop,这是完全合法的,并且可能,计算遵循BODMAS(与任何算术计算一样).

当它通过StyleCop传递时,它会显示以下警告:

CSharp.Maintainability:在算术表达式中插入括号以声明运算符优先级.

据推测,我需要做的就是在插入括号时遵循BODMAS的规则,如下所示:

x = y + (y * z);

x = (y + z) - (y * z);
Run Code Online (Sandbox Code Playgroud)

正如我假设StyleCop希望我明确定义BODMAS的规则,如果我想要执行计算,正如我没有括号那么正确吗?

小智 11

它是正确的.StyleCop基本上假设您对Operator优先级不太满意并希望明确写出来.如果有人稍后处理公式,那么这可以导致更稳定的代码.从技术上讲,不需要 - 但是你会假设编译器将如何处理它是绝对正确的.当然通常就是这种情况(BODMAS).

最后,情况是"你可能不知道你做了什么,所以我们确保你拼出来".这不是一种糟糕的态度 - 代码稳定性是主要关注点 - 但你也可以将警告关闭.