CA1715: Gli identificatori devono contenere il prefisso corretto
TypeName |
IdentifiersShouldHaveCorrectPrefix |
CheckId |
CA1715 |
Category |
Microsoft.Naming |
Breaking Change |
Sostanziale - Quando generato su interfacce Non sostanziale – Se generato su parametri di tipo generici. |
Causa
Il nome di un'interfaccia visibile esternamente non inizia con una "I" maiuscola.
In alternativa
Il nome di un parametro di tipo generico su un tipo o metodo visibile esternamente non inizia con una "T" maiuscola.
Descrizione della regola
Per convenzione i nomi di determinati elementi di programmazione iniziano con un prefisso specifico.
I nomi di interfaccia devono iniziare con la I maiuscola seguita da un'altra lettera maiuscola. Questa regola riporta violazioni per i nomi di interfaccia quali "MyInterface" e "IsolatedInterface".
I nomi di parametri di tipo generico devono iniziare con una "T" maiuscola facoltativamente seguita da un'altra lettera maiuscola. Questa regola segnala violazioni per i nomi di parametri di tipo generici quali "V" e "Type".
Le convenzioni di denominazione forniscono un aspetto comune alle librerie che si avvalgono di Common Language Runtime. In questo modo si riduce la curva di apprendimento necessaria per le nuove librerie software e i clienti possono confidare nel fatto che la libreria è stata sviluppata da un esperto nello sviluppo di codice gestito.
Come correggere le violazioni
Rinominare l'identificatore in modo che presenti il prefisso corretto.
Esclusione di avvisi
Non escludere un avviso da questa regola.
Esempio
Nell'esempio riportato di seguito viene illustrata un'interfaccia denominata in modo errato.
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();
};
}
Nell'esempio riportato di seguito viene risolta la violazione precedente mediante l'aggiunta del prefisso 'I' al nome dell'interfaccia.
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();
};
}
Nell'esempio riportato di seguito viene illustrato un parametro di tipo generico denominato in modo errato.
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
{
};
}
Nell'esempio riportato di seguito viene risolta la violazione precedente aggiungendo il prefisso 'T' al nome del parametro di tipo generico.
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
{
};
}
Regole correlate
CA1722: Gli identificatori non devono contenere il prefisso non corretto