如果有人可以根据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,但我不应该这样做。我显然只是在玩数字游戏,那时候它还没有真正的可读性或可维护性。我对这种情况下增加逻辑背后的逻辑感到好奇。显然不是行数。

最佳答案

将变量全部放在顶部,这样您就可以更清楚地了解函数中的内容,至少是那些决定代码度量规则的人认为的。

这是否是真的?完全取决于编写代码的团队。看来您已经按问题的语气知道了这一点,但是几乎所有的代码指标都花了一点功夫,这才是别人认为最好的,对于Microsoft以外的团队来说可能并非如此...做到最好对于您的团队,而不是某些计算器告诉您的内容。

我不会做出对您和您的团队的编码性能有害的更改(除非是为了提高实际性能或改善错误处理等),而您认为这些更改对于在指标板上获得一些要点不太可读。

话虽如此,如果它给您带来了非常低的可维护性,那么可能值得一看或分解成较小的部分,因为对于任何团队来说,非常低的分数可能都 Not Acceptable 。

关于c# - 为什么该可维护性指数增加?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2749082/

10-11 06:55