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 ステートメントが複数の行に分割されている場合は、中かっこを使用します
  • 簡単に (そして読みやすく) 1 行に入れることができる単純な引数の検証などに中括弧を使用しないでください。

StyleCop はここで私を助けてくれますか?

4

2 に答える 2

8

すでに述べたように、残念ながら StyleCop ルールはオンまたはオフのいずれかであり、カスタマイズすることはできません。ルールをカスタマイズする簡単な方法があればいいのですが、残念ながら、最初からルールを作成する必要があります。

私が StyleCop を使用した方法は、できるだけ多くの組み込みルールを使用することに集中することであり、ルール (コードのドキュメントなど) に根本的な問題がある場合は、それをオフにするだけです。カスタム ルールを作成する程度の例外については、あまり気にしていません。

于 2009-06-12T09:56:48.757 に答える
3

StyleCop (そして私もここで同意します) は、これを複数の行に分割することを望んでいます。(ほぼ間違いなく) 正当な理由により、1 行の if ステートメントは好きではありません。これにより、if ステートメントの一貫性のない使用パターンが発生します。これは、ルールが最初に存在する理由の 1 つです。

表示されている動作を取得するには、SDK を使用して、その特定のケース用に独自のカスタマイズされたルールを作成し、既定のルールを無効にする必要があります。

于 2009-06-09T17:25:04.647 に答える