recorrer - Denominación de enumeraciones en Java: ¿Singular o Plural?
recorrer enum java (2)
De la misma manera que cuando define un nombre de tabla en una base de datos o una clase en Java, usa singular para enumeraciones, también es la mejor opción. Solo mira cómo vas a usarlo.
Vamos a escribir un ejemplo:
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
class Appointment {
private Day day;
public void setDay(Day day) {
this.day = day;
}
}
En forma singular, ve claramente la intención del atributo día. "día" es el día de la semana en que se llevará a cabo esta cita. De lo contrario, la firma del método se habría establecido (día) y seguramente mucha gente se preguntará si la cita podría suceder en más de un día.
Si trabajas en una empresa que tiene turnos de 48 horas, podrías intentar definir algo como:
public enum Days {
MONDAY_TUESDAY, WEDNESDAY_THURSDAY, FRIDAY_SATURDAY
}
De esta forma, podría establecer los días en los que va a trabajar. Pero aún se verá raro y hay una mejor opción y es usar la forma singular:
public enum Shift {
MONDAY_TUESDAY, WEDNESDAY_THURSDAY, FRIDAY_SATURDAY
}
Ahora realmente estás mostrando el significado de la enumeración. Usualmente en cualquier dominio encontrarás que usar singular para una enumeración es la mejor opción ya que cada constante en la enumeración es solo un elemento.
También mencionas .NET. Una enumeración de "indicadores" en .NET solo significa que cuando esperas esa enumeración como parámetro, lo que realmente obtienes es una lista de elementos de esa enumeración (almacenada como un entero).
// Define an Enum with FlagsAttribute.
[FlagsAttribute]
enum MultiHue : short
{
Black = 0,
Red = 1,
Green = 2,
Blue = 4
};
public void setMultiHue(MultiHue hues);
Podrías hacer lo mismo en Java, pero la enumeración aún será singular:
public enum Hue {
BLACK, RED, GREEN, BLUE;
private final Integer hue;
Hue() {
this.hue = 1 << this.ordinal();
}
public Integer toFlag() {
return this.hue;
}
}
public class MultiHue {
private Integer hues = 0;
public void addHue(Hue hue) {
this.hues |= hue.toFlag();
}
public boolean hasHue(Hue hue) {
return (this.hues & hue.toFlag()) != 0;
}
}
Una forma más fácil y más clara (aunque usa más memoria) para hacer esto con Java es simplemente usar una Lista.
¿Existe una recomendación "oficial" de cómo nombrar enums de Java?
enum Protocol { HTTP, HTTPS, FTP }
o
enum Protocols { HTTP, HTTPS, FTP }
Sé que en el mundo .Net la recomendación es usar el singular, excepto las enumeraciones que representan indicadores de bits. Solo curiosidad si hay algo similar en Java.
Una pregunta relacionada que parece ser específica de .Net: ¿ Singular o plural para enumeraciones?
Los mensajes en Java (y probablemente las enumeraciones en general) deben ser singulares. La idea es que no está seleccionando múltiples protocolos, sino un protocolo de las posibles elecciones en la lista de valores.
Tenga en cuenta la ausencia de plurales: http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html