variable objetos clases clase ruby constants class-variables

objetos - ruby variable



Constantes o variables de clase en ruby? (4)

He estado programando en Ruby durante unos meses, y me pregunto cuándo es apropiado usar constantes sobre variables de clase y viceversa. (Estoy trabajando en Rails, pensando en constantes en los modelos).

class Category TYPES = %w(listing event business).freeze end

O

class Category @@types = %w(listing event business).freeze cattr_reader :types end

¿Hay circunstancias donde uno es preferible a otro? ¿O es solo una cuestión de gusto / estilo?


Lo principal es que al usar la notación CONSTANTE, se lo deja en claro al lector. la minúscula cadena congelada da la impresión de que se puede ajustar, lo que obliga a alguien a volver atrás y leer el RDoc.


Si estos son valores realmente constantes que define en el código fuente y no desea cambiarlos durante la ejecución del código, le recomendaría utilizar constante.

Si planea establecer y / o cambiar estos valores dinámicamente durante la ejecución, utilice la variable de clase con getters y setters.


Si no desea que el valor cambie alguna vez durante el tiempo de ejecución de su programa, y se siente cómodo al permitir que se acceda al valor fuera de su clase, use una constante.

De lo contrario, puede usar una variable de clase. Sin embargo, tenga en cuenta que las variables de clase se comparten entre subclases e instancias de subclases. Entonces, si en algún momento en el futuro puede implementar una clase para niños, debe tener mucho cuidado con el uso de las variables de clase.

Consulte las respuestas aquí para obtener más información sobre esto: Variables de clase en Ruby


Básicamente, podrías ponerlo así: si quieres algo que sea constante, usa una constante. Si quieres algo que sea variable, usa una variable. Parece que su lista de tipos son constantes, ya que es una matriz congelada, por lo que diría que tiene sentido usar una constante en este caso.