获得StyleCop规则SA1503 CurlyBracketsMustNotBeOmitted更加灵活

时间:2009-06-09 17:19:32

标签: stylecop

我很难使用StyleCop规则SA1503(CurlyBracketsMustNotBeOmitted)。

在我的代码中,我经常有一个模式:

public void SomeFunction(string someArg)
{
    if (string.IsNullOrEmpty(someArg)) throw new ArgumentNullException("someArg");

    // rest of the function here
}

这背后的基本原理是在对单个参数进行多次验证检查和/或检查许多参数时保存垂直空间。这种检查中的逻辑通常简单而简洁,同样也适用于抛出的异常。

但是,我从不

if (someConditional)
    DoSomeStuff();

我总是写

if (someConditional)
{
    DoSomeStuff();
}

总结如下:

  • 如果if语句分为多行,则使用大括号
  • 不要使用花括号进行简单的参数验证等,可以轻松(并且可读)放在一行

StyleCop可以帮助我吗?

2 个答案:

答案 0 :(得分:7)

正如已经提到的,不幸的是,StyleCop规则是开启或关闭的,无法自定义。有一个简单的自定义规则的方法会很好,但不幸的是你需要从头开始编写它们。

我使用StyleCop的方法是专注于尽可能多地使用内置规则,并且我确实存在规则的基本问题(例如代码文档),我只是将其关闭。我不太关心编写自定义规则的例外情况。

答案 1 :(得分:3)

StyleCop(我同意这里)希望你将它分成多行。它不喜欢if一行中的语句,因为(可以说是)正当理由 - 这会导致if语句的使用模式不一致,这是规则首先存在的原因之一。

要获得您正在展示的行为,您可能需要使用SDK为该特定情况编写自己的自定义规则,然后禁用默认规则。