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


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

Обновлен: Ноябрь 2007

TypeName

IdentifiersShouldHaveCorrectPrefix

CheckId

CA1715

Категория

Microsoft.Naming

Критическое изменение

Критическое — если возникает в интерфейсах.

Не критическое — если возникает в универсальных параметрах-типах.

Причина

Имя доступного для внешнего кода интерфейса не начинается с прописной буквы "I".

либо

Имя универсального параметра-типа в доступном для внешнего кода типе или методе не начинается с прописной буквы "Т".

Описание правила

В соответствии с соглашением об именовании, имена некоторых элементов программирования начинаются с особого префикса.

Имена интерфейсов должны начинаться с прописной буквы "I", за которой следует другая прописная буква. Данное правило сообщает о нарушениях именования интерфейсов, например в именах "MyInterface" и "IsolatedInterface".

Имя универсального параметра-типа должно начинаться с прописной буквы "Т". Если имя параметра содержит несколько букв, вторая буква также должна быть прописной. Данное правило сообщает о нарушениях именования универсальных параметров-типов, например в именах "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
    {

    };
}

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

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