Conjunto de reglas de análisis de código Reglas de directrices de diseño extendidas de Microsoft
El conjunto Reglas de directrices de diseño extendidas de Microsoft expande las reglas de directrices de diseño básicas para maximizar los problemas de mantenimiento y uso que se notifican. Se hace especial hincapié en las directrices de nomenclatura. Debe incluir este conjunto de reglas si el proyecto incluye código de bibliotecas o si desea exigir los más altos estándares para escribir código que resulte fácil de mantener.
Las Reglas de directrices de diseño extendidas incluye todas las Reglas de directrices de diseño básicas de Microsoft. Estas últimas incluyen todas las Reglas mínimas recomendadas de Microsoft. Para obtener más información, vea Conjunto de reglas de análisis de código Reglas de directrices de diseño básicas de Microsoft y Conjunto de reglas de análisis de código Reglas mínimas recomendadas de Microsoft.
En la tabla siguiente se describen todas las reglas del conjunto Reglas de directrices de diseño extendidas de Microsoft.
Regla |
Descripción |
---|---|
Asegúrese de que existe una organización lógica para cada espacio de nombres y que hay una razón para colocar los tipos en un espacio de nombres apenas lleno. |
|
Para pasar tipos por referencia (utilizando los parámetros out o ref), es necesario tener experiencia con punteros, conocer la diferencia entre los tipos de referencia y los tipos de valor y controlar métodos con varios valores devueltos. Además, no se suele saber qué diferencia hay entre los parámetros out y ref. |
|
Las interfaces definen miembros que proporcionan un comportamiento o acuerdo de uso. Cualquier tipo puede adoptar la funcionalidad descrita por la interfaz sin tener en cuenta dónde aparece el tipo en la jerarquía de herencia. Un tipo implementa una interfaz proporcionando las implementaciones para los miembros de la interfaz. Una interfaz vacía no define ningún miembro; por consiguiente, no define ningún contrato que se pueda implementar. |
|
Para pasar tipos por referencia (utilizando los parámetros out o ref) es necesario tener experiencia con punteros, saber la diferencia entre los tipos de referencia y los tipos de valor, y controlar métodos con varios valores devueltos. Los arquitectos de biblioteca cuyos diseños están destinados a los usuarios en general no deben esperar que los usuarios dominen el uso de los parámetros out o ref. |
|
Todos los argumentos de referencia pasados a métodos visibles externamente se deben comprobar para ver si son null. |
|
Un tipo tiene más de cuatro niveles de profundidad en su jerarquía de herencia. Las jerarquías de tipos con demasiados niveles de anidación pueden resultar difíciles de seguir, comprender y mantener. |
|
El nombre de un campo de instancia empieza por "s_", o el nombre de un campo estático (Shared en Visual Basic) empieza por "m_". |
|
Un tipo o método tiene un valor del índice de mantenimiento bajo. Un índice de mantenimiento bajo indica que un tipo o método resulta probablemente difícil de mantener y se debería volver a diseñar. |
|
Esta regla mide el acoplamiento de clase contando el número de referencias de tipo únicas que contiene un tipo o método. |
|
Esta regla supone que un miembro de la enumeración con un nombre que contiene la palabra "reserved" no se utiliza actualmente pero hace de marcador de posición para que se pueda quitar o cambiar el nombre en una versión posterior. Quitar o cambiar el nombre de un miembro es un cambio importante. |
|
Cada palabra en la cadena de recursos se divide en tokens basándose en el uso de mayúsculas y minúsculas. La biblioteca de correctores ortográficos de Microsoft comprueba cada combinación de dos tokens contiguos. Si la reconoce, la palabra genera una infracción de la regla. |
|
CA1702: En las palabras compuestas se deberían utilizar las mayúsculas y minúsculas correctamente |
El nombre de un identificador contiene varias palabras y al menos una de ellas parece ser una palabra compuesta en la que no se utilizan correctamente las mayúsculas y minúsculas. |
CA1703: Las cadenas de recursos deberían tener la ortografía correcta |
Una cadena de recurso contiene una o varias palabras que la biblioteca de correctores ortográficos de Microsoft no reconoce. |
CA1704: Los identificadores deberían tener la ortografía correcta |
El nombre de un identificador visible externamente contiene una o varias palabras que la biblioteca de correctores ortográficos de Microsoft no reconoce. |
Por convención, los nombres del identificador no contienen el carácter de subrayado (_). Esta regla comprueba espacios de nombres, tipos, miembros y parámetros. |
|
CA1709: Los identificadores deberían utilizar las mayúsculas y minúsculas correctamente |
Por convención, en los nombres de parámetro se aplica el uso combinado de mayúsculas y minúsculas, mientras que los nombres de espacio de nombres, tipo y miembro utilizan la grafía Pascal. |
CA1710: Los identificadores deberían tener el sufijo correcto |
Por convención, los nombres de tipos que extienden determinados tipos base o que implementan algunas interfaces, o tipos derivados de estos tipos, tienen un sufijo asociado al tipo base o a la interfaz. |
CA1711: Los identificadores no deberían tener el sufijo incorrecto |
Por convención, los nombres de tipos que extienden determinados tipos base o que implementan algunas interfaces, o tipos derivados de estos tipos, deben terminar con unos sufijos reservados específicos. Otros nombres de tipo no deben utilizar estos sufijos reservados. |
CA1712: No utilizar prefijos en valores de enumeración con el nombre del tipo |
Los nombres de los miembros de la enumeración no llevan el nombre de tipo como prefijo porque se espera que sean herramientas de desarrollo las que proporcionen la información de tipo. |
CA1713: Los eventos no deberían tener prefijos antes ni después |
El nombre de un evento empieza por "Before" o "After". Para nombrar los eventos relacionados que se provocan en una secuencia específica, utilice el tiempo presente o pasado para indicar la posición relativa en la secuencia de acciones. |
CA1714: Las enumeraciones Flags deberían tener nombres en plural |
Una enumeración pública tiene el atributo System.FlagsAttribute y su nombre no termina en "s". Los tipos marcados con FlagsAttribute tienen nombres en plural porque el atributo indica que se puede especificar más de un valor. |
CA1715: Los identificadores deberían tener el prefijo correcto |
El nombre de una interfaz visible externamente no empieza por "I" mayúscula. El nombre de un parámetro de tipo genérico en un tipo o método visibles externamente no empieza por "T" mayúscula. |
CA1717: Solo las enumeraciones FlagsAttribute deberían tener nombres en plural |
Las convenciones de nomenclatura establecen que un nombre en plural para una enumeración indica que se pueden especificar varios valores de enumeración al mismo tiempo. |
CA1719: Los nombres de parámetro no deberían coincidir con los nombres de miembro |
Un nombre de parámetro debe comunicar el significado del parámetro y un nombre de miembro debe comunicar el significado del miembro. Sería un diseño extraño si éstos fueran los mismos. Denominar un parámetro igual que el nombre del miembro no es intuitivo y dificulta el uso de la biblioteca. |
CA1720: Los identificadores no deben contener nombres de tipo |
El nombre de un parámetro en un miembro visible externamente contiene un nombre de tipo de datos o el nombre de un miembro visible externamente contiene un nombre de tipo de datos específico del lenguaje. |
CA1721: Los nombres de propiedades no deberían coincidir con los métodos Get |
El nombre de un miembro público o protegido empieza por "Get" y en cualquier otro caso coincide con el nombre de una propiedad pública o protegida. " Los métodos y propiedades "Get" deben tener nombres que distingan claramente su función. |
CA1722: Los identificadores no deberían tener el prefijo incorrecto |
Por convención, sólo ciertos elementos de programación tienen nombres que comienzan con un prefijo concreto. |
CA1724: Los nombres de tipo no deben coincidir con los espacios de nombres |
Los nombres de tipo no deben coincidir con los nombres de espacios de nombres definidos en la biblioteca de clases de .NET Framework. Infringir esta regla puede reducir la utilidad de la biblioteca. |
CA1725: Los nombres de parámetro deberían coincidir con la declaración base |
El uso del mismo nombre para un parámetro en una jerarquía de reemplazo aumenta la utilidad de los reemplazos de método. Cuando el nombre de un parámetro en un método derivado es distinto del nombre de la declaración base, puede resultar difícil determinar si el método es un reemplazo del método base o una nueva sobrecarga del método. |
El nombre de un identificador visible externamente incluye un término para el que existe un término alternativo más apropiado. Alternativamente, el nombre incluye el término "Flag" o "Flags". |
|
Una cadena literal en el cuerpo de un método contiene una o varias palabras que la biblioteca de correctores ortográficos de Microsoft no reconoce. |