Поделиться через


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
    {

    };
}

Связанные правила

CA1722: идентификаторы не должны иметь неверные префиксы