Я был бы признателен, если бы кто-нибудь мог объяснить мне разницу между следующими двумя частями кода с точки зрения правил Visual Studio Code Metrics. Почему индекс работоспособности немного увеличивается, если я не инкапсулирую все в 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)))
, я не должен. Я бы явно просто играл с цифрами, и на данный момент он не является более читабельным или поддерживаемым. Мне любопытно, но как же логика может быть за этим увеличением. Это явно не количество строк.