Compartir a través de


CA1715: Los identificadores deberían tener el prefijo correcto

Nombre de tipo

IdentifiersShouldHaveCorrectPrefix

Identificador de comprobación

CA1715

Categoría

Microsoft.Naming

Cambio problemático

Problemático: cuando se desencadena en interfaces.

No problemático: cuando se produce en parámetros de tipo genérico.

Causa

El nombre de una interfaz visible externamente no empieza por "I" mayúscula.

O bien

El nombre de un parámetro de tipo genérico en un tipo o método visible externamente no empieza por "T" mayúscula.

Descripción de la regla

Por convención, los nombres de determinados elementos de programación comienzan con un prefijo concreto.

Los nombres de interfaz deberían comenzar con una 'I' mayúscula seguida de otra letra mayúscula. Esta regla crea un informe de las infracciones de los nombres de interfaz como 'MyInterface' y 'IsolatedInterface'.

Los nombres de parámetro de tipo genérico deben empezar por una 'T' mayúscula y, opcionalmente, pueden ir seguidos de otra letra mayúscula. Esta regla informa acerca de las infracciones en los nombres del parámetro de tipo genérico como "V" y "Type".

Las convenciones de nomenclatura proporcionan una apariencia común a las bibliotecas orientadas a Common Language Runtime. Esto reduce la curva de aprendizaje necesaria para las nuevas bibliotecas de software y aumenta la confianza por parte del cliente en lo que respecta a que la biblioteca fue desarrollada por un especialista en desarrollo de código administrado.

Cómo corregir infracciones

Cambie el nombre del identificador para que se aplique el prefijo correctamente.

Cuándo suprimir advertencias

No suprima las advertencias de esta regla.

Ejemplo

En el ejemplo siguiente se muestra una interfaz con un nombre incorrecto.

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();
    };
}

En el ejemplo siguiente se corrige la infracción anterior agregando el prefijo 'I' a la interfaz.

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();
    };
}

En el ejemplo siguiente se muestra un parámetro de tipo genérico al que se asigna un nombre incorrecto.

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
    {

    };
}

En el ejemplo siguiente se corrige la infracción anterior agregando el prefijo 'T' al parámetro de tipo genérico.

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
    {

    };
}

Reglas relacionadas

CA1722: Los identificadores no deberían tener el prefijo incorrecto