2009-08-26 24 views
54

¿Utiliza singular o plural para enumeraciones? Creo que tiene mejor sentido con el plural en la declaraciónSingular o plural para enumeraciones?

enum Weekdays 
{ 
    Monday, 
    Tuesday, 
    Wednesday, 
    Thursday, 
    Friday, 
    Saturday, 
    Sunday 
} 

... pero creo que tiene más sentido con el singular cuando se utiliza el tipo, por ejemplo,

Weekday firstDayOfWeek = Weekday.Monday; 

leí una recomendación en algún lugar de usar un poco con singular enumeraciones regulares y plural con banderas, pero me gustaría saber un poco más pros y los contras.

+0

Debe ser enumeraciones, no enumeradores. –

+1

Relacionados: http://stackoverflow.com/questions/338156/table-naming-dilemma-singular-vs-plural-names – harpo

Respuesta

58

Aquí se trata directamente de Microsoft:

http://msdn.microsoft.com/en-us/library/4x252001(VS.71).aspx

utilizar un nombre singular para la mayoría de Enum tipos, pero el uso de un nombre plural para Enum tipos que son campos de bits.

+1

Con la nota que los campos de bits deben estar pluralizados. –

+2

Aquí está la última versión de las pautas de MSDN para el diseño de enumeraciones: http://msdn.microsoft.com/en-us/library/ms229058.aspx –

10

En el .NET Framework, la mayoría de las enumeraciones "normales" (por ejemplo DayOfWeek) tienen nombres singulares y enumeraciones bandera (por ejemplo StringSplitOptions, BindingFlags) tienen nombres plurales. Tiene sentido, ya que un valor de una enumeración de indicador puede representar varios elementos, pero para un enum no indicador, solo puede representar un único elemento.

18

Una recomendación viene de .NET Framework Design Guidelines, página 59-60:

Haz el uso de un nombre de tipo singular de una enumeración, a menos que sus valores son bits campos.

public enum ConsoleColor { 
    Black, 
    Blue, 
    Cyan, 
    ... 

Haz el uso de un nombre de tipo plural para una enumeración con campos de bits como valores, también llamada una enumeración banderas.

[Flags] 
public enum ConsoleModifiers { 
    Alt, 
    Control, 
    Shift 
} 
-1

Es subjetivo y no importa lo que se utiliza, siempre y cuando eres consistente (personalmente yo uso singular como su transferencia desde mis convenciones SQL)

+8

Sí importa. Las convenciones promueven la legibilidad y el mantenimiento. La consistencia personal no se compara con la consistencia convencional. – grenade

+1

Difícil ser consistente si cada biblioteca tiene su propia opinión "subjetiva". –

+1

Supongo que como dice Microsoft usar singular, TODOS deberíamos usar singular. Nop. Mientras seas consecuente con tu plualización y singularización (?), Realmente no importa. –

1

En general, considere una definición de enum como una definición de tipo, con los valores de la enumeración como los diferentes valores que puede tener el tipo; Por lo tanto, se pone un nombre singular:

enum Weekday { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }; 

enum CoffeeSize { SMALL, MEDIUM, LARGE }; 
2

Microsoft recommends usando un nombre singular para enumeraciones a menos que utilice el atributo Flags. Y como se extrajo del libro de Lineamientos de Diseño del Marco, no debe sufijo los nombres de tipo de enumeración con Enum, Flags, etc. y no debe prefijar valores de enumeración con una abreviatura o acrónimo como era común con enumeraciones de VB en el día.

+0

¿Pero existe realmente una razón por la cual? Prefijamos interfaces con 'I'. ¿Por qué no prefijar enumeraciones con 'E' y banderas con 'F'. Eso lo dejaría muy claro. Tenga en cuenta que no me gusta prefijar nada más, pero estos son casos especiales como la interfaz donde el tipo nunca cambiará. –

2

En general, considero una definición de enum como una definición de tipo, con los valores de la enumeración siendo los diferentes valores que puede tener el tipo; Por lo tanto, se pone un nombre singular: enum Weekday { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }; enum CoffeeSize { SMALL, MEDIUM, LARGE };

Sí.Si realiza la experiencia mental de implementar las enumeraciones como clases, entonces el hecho de que usaría un nombre singular para el tipo debería revelar que tiene sentido usar nombres singulares para tales enumeraciones. Por ejemplo,

struct Weekday {}; 

const Weekday SUNDAY; 
const Weekday MONDAY; 
const Weekday TUESDAY; 

...

void func (Weekday *day) 
{ 
    if (day == &SUNDAY) 
     ... 
} 

Para que prefiere plurales en las enumeraciones, nombre le pondrías que struct Weekdays?

Cuestiones relacionadas