CA1721: Nomes de propriedades não devem corresponder a métodos get
Property | Valor |
---|---|
ID da regra | CA1721 |
Título | Nomes de propriedades não devem corresponder a métodos get |
Categoria | Nomenclatura |
Correção interruptiva ou sem interrupção | Quebra |
Habilitado por padrão no .NET 8 | Não |
Causa
O nome de um membro começa com "Get" e, de outra forma, corresponde ao nome de uma propriedade. Por exemplo, um tipo que contém um método chamado 'GetColor' e uma propriedade chamada 'Color' causam uma violação de regra. Essa regra não será disparada se a propriedade ou o método estiver marcado com o ObsoleteAttribute.
Por padrão, essa regra analisa apenas os membros externamente visíveis e as propriedades, mas isso é configurável.
Descrição da regra
Métodos "Get" e propriedades devem ter nomes que diferenciem claramente a função.
As convenções de nomenclatura fornecem uma aparência comum para bibliotecas destinadas a Common Language Runtime. Essa consistência reduz o tempo necessário para aprender uma nova biblioteca de software e aumenta a confiança do cliente de que a biblioteca foi desenvolvida por alguém com experiência no desenvolvimento de código gerenciado.
Como corrigir violações
Altere o nome para que ele não corresponda ao nome de um método prefixado com 'Get'.
Quando suprimir avisos
Não suprima um aviso nessa regra. Uma exceção a essa regra é se o método "Get" for causado pela implementação da interface IExtenderProvider.
Suprimir um aviso
Para suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem a fim de desabilitar e, em seguida, reabilitar a regra.
#pragma warning disable CA1721
// The code that's violating the rule is on this line.
#pragma warning restore CA1721
Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none
no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA1721.severity = none
Para obter mais informações, confira Como suprimir avisos de análise de código.
Configurar código para analisar
Use a opção a seguir para configurar em quais partes da base de código essa regra deve ser executada.
Você pode configurar essa opção apenas para essa regra, para todas as regras às quais ela se aplica ou para todas as regras nessa categoria (Nomenclatura) às quais ela se aplica. Para saber mais, confira Opções de configuração de regra de qualidade de código.
Incluir superfícies de API específicas
É possível configurar em quais partes da base de código essa regra deverá ser executada, com base na acessibilidade. Por exemplo, para especificar que a regra deverá ser executada apenas na superfície de API não pública, adicione o seguinte par chave-valor a um arquivo .editorconfig no projeto:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Exemplo
O exemplo a seguir contém um método e uma propriedade que violam essa regra.
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