CA1715: Identificadores devem ter o prefixo correto
TypeName |
IdentifiersShouldHaveCorrectPrefix |
CheckId |
CA1715 |
<strong>Categoria</strong> |
Microsoft.Naming |
Alteração significativa |
Quebrando - quando acionado em interfaces. Não-separável - quando gerado nos parâmetros de tipo genérico. |
Causa
O nome de uma interface visível externamente não inicia com um maiúsculas 'I'.
- ou -
O nome de um parâmetro de tipo genérico em um tipo visível externamente ou método não inicia com uma maiúscula T' '.
Descrição da regra
Por convenção, os nomes de certos elementos de programação é iniciar com um prefixo específico.
Os nomes de interface devem começar com um maiúsculas 'I' seguido de outra letra maiúscula. Esta regra relatórios de violações para nomes de interface como, por exemplo, 'myinterface' e 'isolatedinterface'.
Nomes de parâmetro de tipo genérico devem começar com uma maiúscula T' ' e, opcionalmente, pode ser seguido por outra letra maiúscula. Esta regra relatórios de violações para nomes de parâmetro de tipo genérico como, por exemplo, 'v' e o 'Tipo'.
Convenções de nomenclatura fornecem um aspecto familiar a bibliotecas que se destinam ao uso com a common language runtime. Isso reduz a curva de aprendizado que é necessário para novas bibliotecas de software e aumenta a confiança do cliente que a biblioteca foi desenvolvida por alguém que tenha experiência em desenvolvimento de código gerenciado.
Como corrigir violações
Renomeie o identificador para que ele é prefixado corretamente.
Quando suprimir avisos
Não suprimir um aviso da regra.
Exemplo
O exemplo a seguir mostra uma interface nomeada incorretamente.
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 por meio da prefixação 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 nomeado incorretamente tipo genérico.
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 por meio da prefixação 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
{
};
}