質問

私は今、数ヶ月のためにRubyでプログラミングをしてきた、そしてクラス変数とその逆の上に定数を使用することが適切であるとき、私は思ったんだけど。 (私は、モデルの定数について考え、Railsの中で働いています)。

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

または

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

1が別の望ましい状況がありますか?それとも、それが味/スタイルだけの問題でしょうか?

役に立ちましたか?

解決

主なものは、CONSTANT表記を使用することによって、あなたが読者にそれを明確に作っているということです。下部ケースは、凍結された文字列が戻ってのRDocを読むために誰かを強制的に、印象はが設定可能であるかもしれないです与えます。

他のヒント

これらは、あなたがソースコードで定義本当に一定の値であり、コードの実行中に変更したくない場合は、

私は定数使用することをお勧めします。

あなたは、実行時に動的にこれらの値を設定および/または変更する予定がある場合は、

その後、ゲッターとセッターとクラス変数を使用します。

基本的に、あなたはこのようにそれを置くことができる:あなたが一定の何かをしたい場合は、定数を使用します。あなたは変数の何かをしたい場合は、変数を使用します。これは、タイプは、それが凍結された配列で見て、定数でのあなたのリストのように思えるので、私はそれがこのケースでは定数を使用するために理にかなっていると言うでしょう。

あなたはは、値があなたのプログラムの実行時に変更したいとのない場合は、値は、クラスの外部からアクセスできるようにすることに慣れている、定数を使用します。

そうでなければ、あなたはクラス変数を使用することができます。しかし、クラス変数は、サブクラスとサブクラスのインスタンス間で共有されていることに注意してください。あなたは将来のある時点で、子クラスを実装する可能性があるのであれば、あなたはクラス変数の使用については非常に注意する必要があります。

これに関する詳細はこちらの回答を参照してください:クラス変数をRubyの

あなたの定数プライベートを作りたい場合は、

あなたは常に行うことができます:

FOO = 18
private_constant :FOO
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top