Visual Studio のコード メトリクス ルールに関して、次の 2 つのコードの違いを誰かが説明してくれるとありがたいです。内にすべてをカプセル化しないと、保守性指数がわずかに増加するのはなぜusing ( )
ですか?
サンプル 1 ( MI スコア 71 )
public static String Sha1(String plainText)
{
using (SHA1Managed sha1 = new SHA1Managed())
{
Byte[] text = Encoding.Unicode.GetBytes(plainText);
Byte[] hashBytes = sha1.ComputeHash(text);
return Convert.ToBase64String(hashBytes);
}
}
サンプル 2 ( MI スコア 73 )
public static String Sha1(String plainText)
{
Byte[] text, hashBytes;
using (SHA1Managed sha1 = new SHA1Managed())
{
text = Encoding.Unicode.GetBytes(plainText);
hashBytes = sha1.ComputeHash(text);
}
return Convert.ToBase64String(hashBytes);
}
メトリクスは、より広い文脈と理解の外では無意味であり、プログラマーは裁量を行使する必要があることを理解しています。でスコアを 76 まで上げることができましたが、そうreturn Convert.ToBase64String(sha1.ComputeHash(Encoding.Unicode.GetBytes(plainText)))
すべきではありませんでした。私は明らかに数字で遊んでいるだけであり、その時点でそれは本当に読みやすく、保守可能ではありません。この場合の増加の背後にある論理が何であるかについては興味があります。明らかに行数ではありません。