Поделиться через


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