硬编码字符串的最佳实践

时间:2017-07-13 20:50:27

标签: ruby-on-rails ruby string

我正在编写一个ruby脚本,我从命令行读取命令并检查它们是否正确。如果不是,我会显示比例错误。

我的代码如下所示:

if command == 0
   puts "error one #{command}"
elsif command == 1
   puts "other error two #{command}"
...
end

我有很多不同的错误字符串,并且它们中包含ruby代码。 我想创建一个哈希,但我不能在错误字符串中添加ruby代码。

有没有更好的方法来管理(硬编码)错误字符串?

1 个答案:

答案 0 :(得分:2)

如果代码总是在最后,那么这可能会起作用:

Errors = {
  0 => "error one",
  1 => "other error two",
}.freeze

# later...

command = 1
puts "#{Errors.fetch(command)} #{command}"
#=> other error two 1

否则,您可以添加自定义占位符,然后在错误代码中替换:

Errors = {
  0 => "error %{code} one",
  1 => "%{code} other error two",
}.freeze

def error_str_for_code(code)
  Errors.fetch(code) % { code: code.to_s }
end

# later...

command = 1
puts error_str_for_code(command)
#=> 1 other error two