52 votes

Constantes ou variables de classe en ruby?

Je programme en Ruby depuis quelques mois maintenant, et je me demande s’il est approprié d’utiliser des constantes sur des variables de classe et vice-versa. (Je travaille dans Rails, en pensant aux constantes dans les modèles).

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

OU

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

Y a-t-il des circonstances où l'une est préférable à une autre? Ou est-ce juste une question de goût / style?

58voto

Charlie Martin Points 62306

Le principal est qu’en utilisant la notation CONSTANT, vous le faites comprendre au lecteur. les minuscules, chaîne congelée donne l'impression est peut être réglable, obligeant quelqu'un à revenir en arrière et à lire le RDoc.

12voto

Si ce sont vraiment des valeurs constantes que vous définissez dans le code source et que vous ne voulez pas modifier pendant l'exécution du code, je vous recommande d'utiliser constant.

Si vous prévoyez de définir et / ou de modifier ces valeurs de manière dynamique lors de l'exécution, utilisez la variable de classe avec des getters et des setters.

8voto

August Lilleaas Points 25812

En gros, vous pouvez le formuler comme suit: si vous voulez quelque chose de constant, utilisez une constante. Si vous voulez quelque chose qui est variable, utilisez une variable. Il semble que votre liste de types soit des constantes, vu qu’il s’agit d’un tableau figé, je dirais donc qu’il est logique d’utiliser une constante dans ce cas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X