¿La mejor práctica para empacar enumeraciones Java? [cerrado]

8

¿Cuál es la mejor práctica para empaquetar enumeraciones Java?

¿Es un archivo separado para cada enumeración?
o
tener el mismo archivo para todas las enumeraciones?

Cuáles son los pros y los contras ?

buena velocidad
fuente

Respuestas:

9

Primero, una regla primordial es que si un enumes público, debe declararse en un archivo propio. Esta es una regla de Java que se aplica a todas las clases, interfaces enumys, que no se pueden romper.

Para correos no públicos enum, debe seguir la misma regla, excepto cuando varios enumcorreos electrónicos estén estrechamente conectados.

Por ejemplo, si está creando un procesador de expresión y declarando una enumeración para un subtipo de expresión, un subtipo de expresión binaria y un subtipo de expresión unaria, es posible que desee agrupar las tres enumeraciones en un solo archivo.

dasblinkenlight
fuente
Gran explicación ¿Hay algún impacto en el rendimiento? si tenemos enums estrechamente conectados en la misma clase en comparación con tener cada uno para cada enumeración.
velocidad del producto el
1
@goodspeed La ubicación de clases / enumeraciones / interfaces en los archivos no tiene un impacto en el rendimiento (excepto posiblemente un pequeño impacto en la velocidad de compilación que de todos modos no notaría).
dasblinkenlight
@dasblinkenlight ¿Tiene documentación para probar su segunda oración, que dice que las enumeraciones públicas deben colocarse en su propio archivo?
Max
1
@Max Las reglas para enums no son diferentes de las reglas para otras clases: si una clase es pública, debe estar en el archivo en una ubicación adecuada que coincida con el nombre del paquete, con el nombre de la clase que coincida con el nombre del archivo.
dasblinkenlight
@dasblinkenlight Ah, gracias por su información y tiempo.
Max
4

Las enumeraciones son clases, por lo que debe empaquetarlas como clases ordinarias. Si la enumeración se usa en muchos lugares dentro del paquete, póngala en un solo archivo. Si la enumeración está fuertemente vinculada con una clase, póngala como una clase interna estática pública (o protegida).

No veo razones para colocar todas las enumeraciones en un solo archivo a menos que estén relacionadas.

m3th0dman
fuente
Si están relacionados, puedes anidarlos en una clase. public class Pse164884 {public enum Cat {siamese, manx} public enum Dog {bullgog, poodle}}
Ray Tayek