Partilhar via


CA1715: Os identificadores devem ter o prefixo correto

Propriedade valor
ID da regra CA1715
Cargo Os identificadores devem ter o prefixo correto
Categoria Atribuição de nomes
A correção está quebrando ou não quebrando Quebrando - quando disparado em interfaces.

Non-breaking - quando levantado em parâmetros de tipo genéricos.
Habilitado por padrão no .NET 8 Não

Causa

O nome de uma interface não começa com um 'I' maiúsculo.

-ou-

O nome de um parâmetro de tipo genérico em um tipo ou método não começa com um 'T' maiúsculo.

Por padrão, essa regra examina apenas interfaces, tipos e métodos visíveis externamente, mas isso é configurável.

Descrição da regra

Por convenção, os nomes de certos elementos de programação começam com um prefixo específico.

Os nomes das interfaces devem começar com um «I» maiúsculo seguido de outra letra maiúscula. Esta regra relata violações para nomes de interface como 'MyInterface' e 'IsolatedInterface'.

Os nomes de parâmetros de tipo genéricos devem começar com um 'T' maiúsculo e, opcionalmente, podem ser seguidos por outra letra maiúscula. Esta regra relata violações para nomes de parâmetros de tipo genéricos, como 'V' e 'Type'.

As convenções de nomenclatura fornecem uma aparência comum para bibliotecas que visam o Common Language Runtime. Isso reduz a curva de aprendizado necessária para novas bibliotecas 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.

Configurar código para análise

Use as opções a seguir para configurar em quais partes da base de código executar essa regra.

Você pode configurar essas opções apenas para esta regra, para todas as regras às quais ela se aplica ou para todas as regras nesta categoria (Nomenclatura) às quais ela se aplica. Para obter mais informações, consulte Opções de configuração da regra de qualidade de código.

Incluir superfícies de API específicas

Você pode configurar em quais partes da sua base de código executar essa regra, com base em sua acessibilidade. Por exemplo, para especificar que a regra deve ser executada somente na superfície de API não pública, adicione o seguinte par chave-valor a um arquivo .editorconfig em seu projeto:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Parâmetros de tipo de caractere único

Você pode configurar se deseja ou não excluir parâmetros de tipo de caractere único dessa regra. Por exemplo, para especificar que essa regra não deve analisar parâmetros de tipo de caractere único, adicione um dos seguintes pares chave-valor a um arquivo .editorconfig em seu projeto:

# Package version 2.9.0 and later
dotnet_code_quality.CA1715.exclude_single_letter_type_parameters = true

# Package version 2.6.3 and earlier
dotnet_code_quality.CA2007.allow_single_letter_type_parameters = true

Nota

Esta regra nunca é acionada para um parâmetro de tipo chamado T, por exemplo, Collection<T>.

Como corrigir violações

Renomeie o identificador para que ele seja corretamente prefixado.

Quando suprimir avisos

Não suprima um aviso desta regra.

Exemplo de nomenclatura de interface

O trecho de código a seguir mostra uma interface nomeada incorretamente:

' Violates this rule
Public Interface Book

    ReadOnly Property Title() As String

    Sub Read()

End Interface
// Violation.
public interface Book
{
    string Title
    {
        get;
    }

    void Read();
}

O trecho de código a seguir corrige a violação anterior prefixando a interface com 'I':

// Fixes the violation by prefixing the interface with 'I'.
public interface IBook
{
    string Title
    {
        get;
    }

    void Read();
}
' Fixes the violation by prefixing the interface with 'I'
Public Interface IBook

    ReadOnly Property Title() As String

    Sub Read()

End Interface

Exemplo de nomenclatura de parâmetro de tipo

O trecho de código a seguir mostra um parâmetro de tipo genérico nomeado incorretamente:

' Violates this rule
Public Class Collection(Of Item)

End Class
// Violation.
public class Collection<Item>
{
}

O trecho de código a seguir corrige a violação anterior prefixando o parâmetro de tipo genérico com 'T':

// Fixes the violation by prefixing the generic type parameter with 'T'.
public class Collection<TItem>
{
}
' Fixes the violation by prefixing the generic type parameter with 'T'
Public Class Collection(Of TItem)

End Class