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 coincidente
Descubrí que tengo 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 ¿alguien puede encontrar un problema potencial con tal convención? Sin embargo, tengo un nombre "feo" con la palabra "Estado":
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. Sé la mejor práctica, 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: ¿Alguien puede encontrar un problema potencial con mi convención descrita anteriormente? NO se trata de las mejores prácticas.
Frase de pregunta:
Bueno, supongo que debería hacer la pregunta de esta manera: ¿Alguien puede encontrar una buena forma genérica de nombrar el tipo de enumeración de tal manera que, cuando se use, la denominación de la 'instancia' de enumeración sea bastante sencilla?
Respuestas:
Microsoft recomienda usar singular para
Enum
s a menos queEnum
represente campos de bits (useFlagsAttribute
también). Consulte Convenios de denominación de tipo de enumeración (un subconjunto de las Directrices de denominación de Microsoft ).Para responder a su aclaración, no veo nada de malo en lo siguiente:
o
fuente
OrderStatus == OrderStatus.Pending
es decir, se reconoce como una variable para la izquierda y luego una enumeración a la derechaComencé nombrando enumeraciones en plural pero desde entonces he cambiado a singular. Simplemente parece tener más sentido en el contexto de dónde se usan.
Comparar con:
Encuentro que la forma singular suena más natural en contexto. Estamos de acuerdo en que al declarar la enumeración, que ocurre en un lugar, estamos pensando "este es un grupo de lo que sea", pero cuando lo usamos, presumiblemente en muchos lugares, estamos pensando "este es uno cualquiera" .
fuente
0
para el valor desconocido, de esa manera una variable no inicializada es por defectoUnknown
.[Flags]
embargo, ¿realmente pondrías un atributo en tu ejemplo? No tiene sentido que algo tenga un estado de "Incompleto" y "Listo". Si lo hubiera hechoenum [Flags]Steps { First, Second, Third }
, ¿realmente nombraría su variablecompletedStep
?La situación nunca se aplica realmente al plural.
Un
enum
muestra un atributo de algo u otro. Daré un ejemplo:Puede tener un tipo, pero trate de pensarlo en múltiples, en lugar de en plural:
Humour.Irony | Humour.Sarcasm
Más bien que
Humours { Irony, Sarcasm }
Tienes sentido del humor, no tienes sentido del humor.
fuente
Humours
contenerHumours.Irony | Huomours.Sarcasm
?En general, la recomendación de mejores prácticas es singular, a excepción de las enumeraciones que tienen el atributo [Flags] asociado (y que, por lo tanto, pueden contener campos de bits), que deben ser plurales.
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 tiene que ser diferente del nombre del tipo de enumeración ... No lo hace. Lo siguiente está perfectamente bien ...
fuente
public Color Color { get {...} set {...} }
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 la instancia de la misma puedan tener el mismo nombre. Pongo todas mis Enums con "Enum" específicamente porque deja en claro cuál es el contexto en un uso determinado. En mi opinión, hace que el código sea mucho más legible.
Nadie confundirá nunca qué es la enumeración y cuál es la instancia de la misma.
fuente
Enum
? No es como si el autor estuviera proponiendo postfixing todos los vars con su tipo. El autor también tiene un caso mucho más fuerte dado que se proporciona una razón, mientras que M $ proporciona una justificación cero.Si está intentando escribir un código sencillo pero prohibido como este:
Sus opciones son:
Ignore la recomendación de MS y use un prefijo o sufijo en el nombre de la enumeración:
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:
fuente
enum
en primer lugar y luego anidarlo en otra clase si esto causa problemas?Gender
y el nombre de enumeración comoSex
. Entoncesisac.Gender = Sex.Male
..Mejor práctica: use singular. Tienes una lista de elementos que componen una enumeración. Usar un elemento en la lista suena extraño cuando dices
Versions.1_0
. Tiene más sentido decirloVersion.1_0
ya que solo hay una versión 1_0.fuente
Llegando un poco tarde ...
Hay una diferencia importante entre su pregunta y la que menciona (que pregunté ;-):
Pones la definición de enumeración fuera de la clase, lo que te permite tener el mismo nombre para la enumeración y la propiedad:
En este caso, seguiría las guías de MS y usarí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, evitando el uso de una propiedad nombrada exactamente después de la enumeración.
fuente
En el otro hilo , la convención de nomenclatura de C # para la enumeración y la propiedad coincidente, alguien señaló lo que creo que es una muy buena idea:
"Sé que mi sugerencia va en contra de las convenciones de nomenclatura de .NET, pero personalmente prefijo enumeraciones con 'E' y marcas de enumeración con 'F' (similar a cómo prefijamos Interfaces con 'I')".
fuente