2017-07-13 5 views
0

Ich schreibe ein Ruby-Skript, wo ich Befehle von der Befehlszeile lesen und überprüfen, ob sie korrekt sind. Wenn nicht, zeige ich den proportionalen Fehler an.Best Practices für hartcodierte Strings

Mein Code sieht wie folgt aus:

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

ich viele unterschiedliche Fehler Saiten haben, und sie haben Ruby-Code in ihm. Ich dachte daran, einen Hash zu erstellen, aber ich kann Ruby-Code in der Fehlerzeichenfolge nicht hinzufügen.

Gibt es eine bessere Möglichkeit, (fest codierte) Fehlerzeichenfolgen zu verwalten?

Antwort

2

Wenn der Code immer am Ende sein wird, dann könnte dies funktionieren:

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

# later... 

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

Andernfalls Sie einen benutzerdefinierten Platzhalter und später Ersatz in dem Fehlercode hinzufügen:

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 
+0

Siehe meine aktualisierte Antwort. –

+0

hmm Ich denke, die zweite Antwort löst mein Problem. Vielen Dank. –

+0

@muistooshort Guter Punkt - aktualisierte meine Antwort. –