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