メトリックの最初のルールは、「測定対象に注意する」ことです。あなたはステートメントの数を要求します、それはあなたが得ようとしているものです。お気づきのように、その数字はおそらく実際には関係ありません。
「複雑な」コードなど、他の指標に関心がある場合は、サイクロメトリックの複雑さなど、他のコードメトリックを調べることを検討してください。
http://en.wikipedia.org/wiki/Cyclomatic_complexity
更新:Re:あなたのコメント
「やりすぎ」が興味深い指標であることに同意します。私の概観では、1つのステートメントには1つの副作用(通常はローカル変数の変更などの「ローカル」副作用がありますが、ファイルへの書き込みなどの目に見える副作用)があるため、「ステートメントの数」は大まかになります。副作用の数に関して、メソッドが「実行」している量と相関します。
もちろん、実際には、私自身も含めて、誰のコードも実際に常にその基準を満たしているわけではありません。ステートメントだけでなく、たとえばメソッド呼び出しもカウントするために、「メソッドが実行している量」のメトリックを検討することができます。
実際にあなたの質問に答えるために:私は「ステートメントの数」が何であるかを規制する業界標準を知りません。C#仕様は確かに「ステートメント」が字句的に何であるかを定義しますが、もちろん、カウントを行うには何らかの解釈を行う必要があります。例えば:
void M()
{
try
{
if (blah)
{
Frob();
Blob();
}
}
catch(Exception ex)
{ /* eat it */ }
finally
{
Grob();
}
}
Mにはいくつのステートメントがありますか?Mの本体は、try-catch-finallyという1つのステートメントで構成されています。それで答えは1つですか?tryの本体には、「if」ステートメントという1つのステートメントが含まれています。「if」の結果には1つのステートメントが含まれます。つまり、ブロックはステートメントです。ブロックには2つのステートメントが含まれています。最後に1つのステートメントが含まれています。catchブロックにはステートメントが含まれていません-catchブロックは、字句的にはステートメントではありません-しかし、それは確かにメソッドの操作に非常に関連しています!
それで、それは全部でいくつのステートメントですか?ブロックを「実際の」ステートメントとしてカウントするかどうか、子ステートメントを親ステートメントに追加するものと見なすかどうかなどに応じて、1から6までの任意の数に対して妥当なケースを作成できます。私が知っているこの質問への答えを規制する標準化団体はありません。