CA1500: имена переменных не должны совпадать с именами полей
TypeName |
VariableNamesShouldNotMatchFieldNames |
CheckId |
CA1500 |
Категория |
Microsoft.Maintainability |
Критическое изменение |
При нарушении в параметре, имя которого совпадает с именем поля
При нарушении в локальной переменной, имя которой совпадает с именем поля
|
Причина
Метод экземпляра объявляет параметр или локальную переменную, имя которой совпадает с именем поля экземпляра объявляющего типа. Чтобы обнаружить локальные переменные, которые нарушают данное правило, проверяемую сборку следует построить с использованием отладочной информации, и соответствующий PDB-файл базы данных программы должен быть доступен.
Описание правила
Если имя поля экземпляра совпадает с именем параметра или локальной переменной, то внутри основной части метода доступ к этому полю осуществляется с помощью ключевого слова this (Me в Visual Basic). При поддержании кода можно легко забыть это различие и предположить, что параметр или локальная переменная ссылаются на поле экземпляра, что влечет за собой ошибки. Подобная путаница особенно часто встречается в объемных телах методов.
Устранение нарушений
Чтобы устранить нарушение данного правила, переименуйте параметр/переменную или поле.
Отключение предупреждений
Для этого правила отключать вывод предупреждений не следует.
Пример
В следующем примере показаны два нарушения данного правила.
Imports System
Namespace MaintainabilityLibrary
Class MatchingNames
Dim someField As Integer
Sub SomeMethodOne(someField As Integer)
End Sub
Sub SomeMethodTwo()
Dim someField As Integer
End Sub
End Class
End Namespace
using System;
namespace MaintainabilityLibrary
{
class MatchingNames
{
int someField;
void SomeMethodOne(int someField) {}
void SomeMethodTwo()
{
int someField;
}
}
}