CA1715: Bezeichner sollten ein korrektes Präfix aufweisen
TypeName |
IdentifiersShouldHaveCorrectPrefix |
CheckId |
CA1715 |
Kategorie |
Microsoft.Naming |
Unterbrechende Änderung |
Unterbrechend – Wenn für Schnittstellen ausgelöst. Nicht unterbrechend – Wenn für generische Typparameter ausgelöst. |
Ursache
Der Name einer extern sichtbaren Schnittstelle beginnt nicht mit dem Großbuchstaben 'I'.
– oder –
Der Name eines generischen Typparameters für einen extern sichtbaren Typ oder eine extern sichtbare Methode beginnt nicht mit dem Großbuchstaben "T".
Regelbeschreibung
Gemäß der Konvention beginnen die Namen bestimmter Programmierelemente mit einem bestimmten Präfix.
Schnittstellennamen sollten mit einem großen "I" und einem weiteren Großbuchstaben beginnen. Diese Regel meldet Verstöße für Schnittstellennamen wie "MyInterface" und "IsolatedInterface".
Generische Typparameternamen sollten mit einem großen 'T' beginnen und optional von einem weiteren Großbuchstaben gefolgt werden. Diese Regel meldet Verstöße für Namen generischer Typparameter wie "V" und "Type".
Durch Benennungskonventionen erhalten Bibliotheken, die auf die Common Language Runtime abzielen, ein einheitliches Erscheinungsbild. Dadurch wird der Lernaufwand für neue Softwarebibliotheken verringert. Zudem wird das Kundenvertrauen dahingehend gestärkt, dass die Bibliothek von einem erfahrenen Entwickler für verwalteten Code erstellt wurde.
Behandeln von Verstößen
Benennen Sie den Bezeichner um, sodass er das korrekte Präfix aufweist.
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie keine Warnung dieser Regel.
Beispiel
Im folgenden Beispiel wird eine falsch benannte Schnittstelle dargestellt.
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();
};
}
Im folgenden Beispiel wird der vorherige Verstoß durch Hinzufügen des Präfixes 'I' zur Schnittstelle korrigiert.
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();
};
}
Im folgenden Beispiel wird ein falsch benannter generischer Typparameter dargestellt.
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
{
};
}
Im folgenden Beispiel wird der vorherige Verstoß durch Hinzufügen des Präfixes 'T' zum generischen Typparameter korrigiert.
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
{
};
}