1

我发现 procs 和 lambdas 可以用作短方法和辅助模块的替代品。我将不属于其他任何地方的方法放入一个文件中,该文件只是分配给常量的过程列表。例如,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 回答