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