2013-01-03 23 views
3

请考虑以下算术计算。我已经缩短了他们尽可能为简单起见:StyleCop - 针对运算符优先级的CSharp.Maintainability警告

x = y + y * z; 

x = y + z - y * z; 

这是完全合法的没有了StyleCop,想必,计算如下BODMAS(如应任何算术计算)。

当这是通过了StyleCop通过,它显示了以下警告:

CSharp.Maintainability:算术 表达式中插入括号申报运算符优先级。

大概,我需要做的就是按照BODMAS规则插入支架时,就像这样:

x = y + (y * z); 

x = (y + z) - (y * z); 

正如我纠正我的假设了StyleCop希望我明确定义BODMAS规则如果我想要执行计算,就像没有括号一样?

+2

它是一个StyleCop“可维护性”警告,它有时候会阻止某人仅仅为其中一个计算添加“+2”而不会混淆整个事物,而且它使得它更具可读性,您可以始终禁用规则if你不喜欢它。 –

+1

风格警察规则并不意味着代码分析。正如对此的解释所说的那样:“尽管此代码是合法的,但它不具有高度的可读性或可维护性。为了充分理解此代码,开发人员必须了解并理解C#中的基本运算符优先级规则。”这可能不适用于所有开发人员。因此,最好宣布优先顺序 – ryadavilli

回答

9

这是正确的。 StyleCop基本上认为你对运算符优先级不太熟悉,并希望明确写出。如果稍后有人在公式上工作,这可能会导致更稳定的代码。 Iti在技术上不是必需的 - 但是然后你假设在你的假设中Compiler将如何处理它是绝对正确的。通常情况下是这样(BODMAS)。

最后,这是一个“你可能不知道你做了什么,所以我们确保你拼出来”的情况。这不是一个糟糕的态度 - 代码稳定性是主要关心的问题 - 但是您也可以只关闭该警告。