1

短いメソッドとヘルパー モジュールの代わりに proc とラムダを使用できることがわかりました。他のどこにも属さないメソッドを、定数に割り当てられた proc の単なるリストであるファイルに入れます。たとえば、ファイルhelper_procs.rbは によって必要init.rbとされ、次の内容が含まれています。

RED_TEXT = proc{|t| "\e[31m#{t}\e[0m"} 
GREEN_TEXT = proc{|t| "\e[32m#{t}\e[0m"}
YELLOW_TEXT = proc{|t| "\e[33m#{t}\e[0m"}

CURRENT_TIME = proc do
  date = Time.now.to_s.split(' ')[0].split('-').reverse.join('-')
  time = Time.now.to_s.split(' ')[1]; "#{time} (#{date})"
end

そして、プログラムのどこか (別のファイル) で、次のことを行います。

puts GREEN_TEXT["A string!"]
puts CURRENT_TIME.call

それは悪い習慣ですか?落とし穴はありますか?

4

1 に答える 1

0

それは悪い習慣です。メイン レベルで定数を定義することは、グローバル変数を使用することと同じくらい悪いことです。これは、オブジェクト指向プログラミング (OOP) の目的を無効にします。OOP では、不要なものをできるだけ隠したいと考えています。String何かが文字列で常に機能する場合、文字列のコンテキスト外ではアクセスできず、クラスで定義する必要があります。何かが常に何らかの形式の時刻を提供する場合Time、メソッドの性質に応じて、クラスまたはインスタンス メソッドとしてクラスで定義する必要があります。

于 2013-06-08T13:03:41.717 に答える