coding c# .net enums naming-conventions plural

c# - coding - Convención de nombramiento de Enum-Plural



class naming conventions c# (9)

Estoy haciendo esta pregunta a pesar de haber leído algo similar pero no exactamente lo que quiero en la convención de nomenclatura de C # para la enumeración y la propiedad correspondiente

Descubrí que tengo una tendencia a nombrar enumeraciones en plural y luego ''usarlas'' como singular, por ejemplo:

public enum EntityTypes { Type1, Type2 } public class SomeClass { /* some codes */ public EntityTypes EntityType {get; set;} }

Por supuesto que funciona y este es mi estilo, pero ¿puede alguien encontrar un problema potencial con tal convención? Tengo un nombre "feo" con la palabra "Estado" aunque:

public enum OrderStatuses { Pending, Fulfilled, Error, Blah, Blah } public class SomeClass { /* some codes */ public OrderStatuses OrderStatus {get; set;} }

Información adicional: Tal vez mi pregunta no fue lo suficientemente clara. A menudo tengo que pensar mucho al nombrar las variables de mis tipos de enumeración definidos. Conozco las mejores prácticas, pero no ayuda a facilitar mi trabajo de nombrar esas variables.

No puedo exponer todas mis propiedades de enumeración (por ejemplo, "Estado") como "MyStatus".

Mi pregunta: ¿Puede alguien encontrar un problema potencial con mi convención descrita anteriormente? NO se trata de las mejores prácticas.

Reformular la pregunta:

Bueno, supongo que debería hacer la pregunta de esta manera: ¿Puede alguien salir de una buena forma genérica de nombrar el tipo de enumeración de modo que cuando se use, la denominación de la "instancia" de enumeración sea bastante sencilla?


Comencé a nombrar enumeraciones en plural, pero desde entonces he cambiado a singular. Simplemente parece tener más sentido en el contexto de donde se usan.

enum Status { Unknown = 0, Incomplete, Ready } Status myStatus = Status.Ready;

Comparar con:

Statuses myStatus = Statuses.Ready;

Encuentro la forma singular de sonar más natural en contexto. Estamos de acuerdo en que al declarar la enumeración, lo que sucede en un lugar, estamos pensando que "este es un grupo de malhechores", pero cuando lo usamos, probablemente en muchos lugares, que estamos pensando "esto es lo que sea" .



En general, la recomendación de mejores prácticas es singular, excepto para las enumeraciones que tienen el atributo [Flags] adjunto (y que, por lo tanto, puede contener campos de bits), que debe ser plural.

Después de leer su pregunta editada, tengo la sensación de que puede pensar que el nombre de la propiedad o el nombre de la variable debe ser diferente del nombre del tipo de enumeración ... No es así. Lo siguiente está perfectamente bien ...

public enum Status { New, Edited, Approved, Cancelled, Closed } public class Order { private Status stat; public Status Status { get { return stat; } set { stat = value; } } }


Este es uno de los pocos lugares en los que no estoy de acuerdo con la convención lo suficiente como para ir en contra de ella. TBH, odio que la definición de una enumeración y su instancia puedan tener el mismo nombre. Postfijo todas mis Enums con "Enum" específicamente porque deja claro cuál es el contexto de cada uso dado. OMI hace que el código sea mucho más legible.

public enum PersonTypesEnum { smart, sad, funny, angry } public class Person { public PersonTypesEnum PersonType {get; set;} }

Nadie confundirá jamás lo que es la enumeración y cuál es su instancia.


La situación nunca se aplica realmente al plural.

Una enum muestra un atributo de una cosa u otra. Voy a dar un ejemplo:

enum Humour { Irony, Sarcasm, Slapstick, Nothing }

Puede tener un tipo, pero intente pensarlo en el múltiple, en lugar del plural:

Humour.Irony | Humour.Sarcasm

Más bien que

Humours { Irony, Sarcasm }

Tienes sentido del humor, no tienes sentido del humor.


Llegando un poco tarde ...

Hay una diferencia importante entre tu pregunta y la que mencionas (que pregunté ;-):

Pone la definición de enumeración fuera de la clase, lo que le permite tener el mismo nombre para la enumeración y la propiedad:

public enum EntityType { Type1, Type2 } public class SomeClass { public EntityType EntityType {get; set;} // This is legal }

En este caso, seguiría las pautas de MS y utilizaría un nombre singular para la enumeración (plural para banderas). Es probablemente la solución más fácil.

Mi problema (en la otra pregunta ) es cuando la enumeración se define en el alcance de la clase, impidiendo el uso de una propiedad nombrada exactamente después de la enumeración.


Mejores Prácticas - uso singular. Tienes una lista de elementos que forman un Enum. El uso de un elemento en la lista suena extraño cuando dice Versions.1_0 . Tiene más sentido decir Version.1_0 ya que solo hay una 1_0 Version.


Microsoft recomienda usar singular para Enum s a menos que Enum represente los campos de bits (use el FlagsAttribute también). Consulte Convenciones de nomenclatura de tipos de enumeración (un subconjunto de las Pautas de nomenclatura de Microsoft).

Para responder a su aclaración, no veo nada malo en ninguno de los siguientes:

public enum OrderStatus { Pending, Fulfilled, Error }; public class SomeClass { public OrderStatus OrderStatus { get; set; } }

o

public enum OrderStatus { Pending, Fulfilled, Error }; public class SomeClass { public OrderStatus Status { get; set; } }


Si está intentando escribir un código directo pero prohibido como este:

public class Person { public enum Gender { Male, Female } //Won''t compile: auto-property has same name as enum public Gender Gender { get; set; } }

Sus opciones son:

  1. Ignore la recomendación de MS y use un prefijo o sufijo en el nombre de enumeración:

    public class Person { public enum GenderEnum { Male, Female } public GenderEnum Gender { get; set; } }

  2. Mueva la definición de enumeración fuera de la clase, preferiblemente a otra clase. Aquí hay una solución fácil a lo anterior:

    public class Characteristics { public enum Gender { Male, Female } } public class Person { public Characteristics.Gender Gender { get; set; } }