Compartilhar via


CA1715: os identificadores devem ter o prefixo correto

TypeName

IdentifiersShouldHaveCorrectPrefix

CheckId

CA1715

Categoria

Microsoft.Naming

Alteração Significativa

Interromper - quando é acionado em interfaces.

Sem-quebras - se for gerado em parâmetros de tipo genéricas.

Causa

O nome de uma interface visível não externamente me começa com maiúscula “”.

- ou -

O nome de um parâmetro de tipo genérico em um tipo ou um método externamente visível não começa com um “T” maiúsculo.

Descrição da Regra

Por convenção, os nomes de determinado início dos elementos de programação com um prefixo específico.

Os nomes da interface devem começar-me com maiúscula “” seguido por outra letra maiúscula.Esta regra relata violações para nomes da interface como “MyInterface” e “IsolatedInterface”.

Os nomes de parâmetro de tipo genéricas devem começar com um “T” maiúsculo e opcionalmente podem ser seguido por outra letra maiúscula.Esta regra relata violações para nomes de parâmetro de tipo genéricas como “V” e “tipo”.

Convenções de nomenclatura dão uma aparência comum para bibliotecas que tem como foco o common language runtime.Isto reduz a curva de aprendizado que é necessária para novas bibliotecas de software, e aumenta confiança dos clientes de que a biblioteca foi desenvolvida por alguém que com experiência programar código gerenciado.

Como Corrigir Violações

Renomeie o identificador de modo que é prefixado corretamente.

Quando Suprimir Alertas

Não elimine um alerta desta regra.

Exemplo

O exemplo a seguir mostra uma interface incorretamente denominada.

Imports System

Namespace Samples

    Public Interface Book      ' Violates this rule

        ReadOnly Property Title() As String 

        Sub Read()

    End Interface 

End Namespace
using System;

namespace Samples
{
    public interface Book   // Violates this rule
    {
        string Title
        {
            get;
        }

        void Read();        
    }
}
using namespace System;

namespace Samples
{
    public interface class Book     // Violates this rule
    {
        property String^ Title
        {
            String^ get();
        }
        void Read();
    };
}

O exemplo a seguir corrige a violação anterior para prefixar a interface com “i”.

Imports System

Namespace Samples

    Public Interface IBook  ' Fixes the violation by prefixing the interface with 'I'

        ReadOnly Property Title() As String 

        Sub Read()

    End Interface 

End Namespace
using System;

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

        void Read();        
    }
}
using namespace System;

namespace Samples
{
    public interface class IBook  // Fixes the violation by prefixing the interface with 'I'
    {
        property String^ Title
        {
            String^ get();
        }
        void Read();
    };
}

O exemplo a seguir mostra um parâmetro de tipo genérico nomeado incorretamente.

Imports System

Namespace Samples

    Public Class Collection(Of Item)    ' Violates this rule

    End Class 

End Namespace
using System;

namespace Samples
{
    public class Collection<Item>   // Violates this rule
    {

    }
}
using namespace System;

namespace Samples
{
    generic <typename Item>     // Violates this rule 
    public ref class Collection
    {

    };
}

O exemplo a seguir corrige a violação anterior para prefixar o parâmetro de tipo genérico com “T”.

Imports System

Namespace Samples

    Public Class Collection(Of TItem)  ' Fixes the violation by prefixing the generic type parameter with 'T'

    End Class 

End Namespace
using System;

namespace Samples
{
    public class Collection<TItem>  // Fixes the violation by prefixing the generic type parameter with 'T'

    {

    }
}
using namespace System;

namespace Samples
{
    generic <typename TItem>  // Fixes the violation by prefixing the generic type parameter with 'T' 
    public ref class Collection
    {

    };
}

Regras Relacionadas

CA1722: os identificadores não devem ter prefixo incorreto