CA1721: имена свойств не должны совпадать с именами методов get
Свойство | Значение |
---|---|
Идентификатор правила | CA1721 |
Заголовок | Имена свойств не должны совпадать с именами методов get |
Категория | Именование |
Исправление является критическим или не критическим | Критическое |
Включен по умолчанию в .NET 8 | No |
Причина
Имя элемента начинается с "Get" и соответствует имени свойства и по другим параметрам. Например, тип, содержащий метод с именем "GetColor" и свойство с именем "Color", приводит к нарушению правил. Это правило не срабатывает, если свойство или метод помечены атрибутом ObsoleteAttribute.
По умолчанию это правило проверяет только видимые извне свойства и типы, но это поведение можно настроить.
Описание правила
Методы Get и свойства должны иметь имена, позволяющие четко различать их функции.
Соглашения об именовании обеспечивают единство вида библиотек, предназначенных для среды CLR. Такое единообразие сокращает время, необходимое для изучения новой библиотеки программного обеспечения, и повышает уверенность пользователей в том, что библиотека была разработана кем-то, кто имеет опыт разработки управляемого кода.
Устранение нарушений
Измените имя так, чтобы оно не совпадало с именем метода с префиксом "Get".
Когда лучше отключить предупреждения
Для этого правила отключать вывод предупреждений не следует. Одно из исключений из этого правила заключается в том, что метод Get вызван реализацией IExtenderProvider интерфейса.
Отключение предупреждений
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable CA1721
// The code that's violating the rule is on this line.
#pragma warning restore CA1721
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none
в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.CA1721.severity = none
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.
Настройка кода для анализа
Используйте следующий параметр, чтобы выбрать части базы кода для применения этого правила.
Этот параметр можно настроить только для этого правила, для всех правил, к которым он применяется, или для всех правил в этой категории (именование), к которым она применяется. Дополнительные сведения см. в статье Параметры конфигурации правила качества кода.
Включение определенных контактных зон API
Вы можете настроить, для каких частей базы кода следует выполнять это правило в зависимости от их доступности. Например, чтобы указать, что правило должно выполняться только для закрытой контактной зоны API, добавьте следующую пару "ключ-значение" в файл EDITORCONFIG в своем проекте:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Пример
В следующем примере содержатся метод и свойство, нарушающие это правило.
public class Test
{
public DateTime Date
{
get { return DateTime.Today; }
}
// Violates rule: PropertyNamesShouldNotMatchGetMethods.
public string GetDate()
{
return this.Date.ToString();
}
}
Imports System
Namespace ca1721
Public Class Test
Public ReadOnly Property [Date]() As DateTime
Get
Return DateTime.Today
End Get
End Property
' Violates rule: PropertyNamesShouldNotMatchGetMethods.
Public Function GetDate() As String
Return Me.Date.ToString()
End Function
End Class
End Namespace