5

我很难使用 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 可以在这里帮助我吗?

4

2 回答 2

8

如前所述,不幸的是 StyleCop 规则要么开启要么关闭,并且无法自定义。有一种自定义规则的简单方法会很好,但不幸的是,您需要从头开始编写它们。

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

于 2009-06-12T09:56:48.757 回答
3

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

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

于 2009-06-09T17:25:04.647 回答