【发布时间】:2011-02-14 11:58:46
【问题描述】:
如果有人可以根据 Visual Studio 的代码度量规则向我解释以下两段代码之间的区别,我将不胜感激。如果我不将所有内容都封装在 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);
}
我理解指标在更广泛的背景和理解之外毫无意义,程序员应该谨慎行事。虽然我可以使用return Convert.ToBase64String(sha1.ComputeHash(Encoding.Unicode.GetBytes(plainText))) 将分数提高到 76,但我不应该这样做。我显然只是在玩数字,那时它并没有真正更具可读性或可维护性。我很好奇这种情况下增加背后的逻辑可能是什么。这显然不是行数。
【问题讨论】:
-
围绕这个问题的讨论及其各种答案表明,可维护性指数不是很直观——另请参阅我的post on the maintainability index,讨论该指标的各种问题。
标签: c# refactoring metrics code-metrics