CA1715: идентификаторы должны иметь правильные префиксы
TypeName |
IdentifiersShouldHaveCorrectPrefix |
CheckId |
CA1715 |
Категория |
Microsoft.Naming |
Критическое изменение |
Критическое — если возникает в интерфейсах. Не критическое — если происходит для параметров универсального типа. |
Причина
Имя доступного для внешнего кода интерфейса не начинается с заглавной буквы "I".
– или –
Имя параметра универсального типа в доступном для внешнего кода типе или методе не начинается с заглавной буквы "Т".
Описание правила
В соответствии с соглашением об именовании, имена некоторых элементов программирования начинаются с особого префикса.
Имена интерфейсов должны начинаться с прописной буквы "I", за которой следует другая прописная буква. Данное правило сообщает о нарушениях именования интерфейсов, например в именах "MyInterface" и "IsolatedInterface".
Имена параметров универсального типа должны начинаться с заглавной "T", за которой может следовать другая прописная буква (необязательно). Данное правило сообщает о нарушениях именования универсальных параметров-типов, например в именах "V" и "Type".
Соглашения об именах обеспечивают единообразие библиотек, предназначенных для выполнения в среде CLR. Это позволяет сократить время обучения, необходимое для освоения новых библиотек программного обеспечения, и укрепить уверенность клиента в том, что библиотека была разработана опытным разработчиком управляемого кода.
Устранение нарушений
Переименуйте идентификатор, чтобы он содержал правильный префикс.
Отключение предупреждений
Для этого правила отключать вывод предупреждений не следует.
Пример
В следующем примере показан интерфейс с неправильным именем.
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();
};
}
В следующем примере нарушение устраняется посредством добавления к имени интерфейса префикса "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();
};
}
В следующем примере показан универсальный параметр-тип с неправильным именем.
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
{
};
}
В следующем примере нарушение устраняется посредством добавления к имени универсального параметра-типа префикса "Т".
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
{
};
}