Ruby 正在寻找清理代码的帮助
这是一个课堂作业。我想为油炸圈饼店创建一个注册类型的应用程序。应用程序应接受Ruby 正在寻找清理代码的帮助,ruby,architecture,Ruby,Architecture,这是一个课堂作业。我想为油炸圈饼店创建一个注册类型的应用程序。应用程序应接受“l”以列出口味,“a”以添加口味,“d”以删除口味,以及“e”以退出。价格应按升序排列。添加香精时,应先询问香精,然后询问价格 我的应用程序正在运行。它使用Jekyll(类使用的内容) 但是它比我这里的还要丑陋。我感谢你的任何意见。我感兴趣的是,为了清理,我应该做些什么,也许可以在应该做的地方添加类/方法,并使其更加Rubyesque。我会将代码更改为以下内容。这不是重构,因为它不等同于您的代码。特别是,它不像您的代码
“l”
以列出口味,“a”
以添加口味,“d”
以删除口味,以及“e”
以退出。价格应按升序排列。添加香精时,应先询问香精,然后询问价格
我的应用程序正在运行。它使用Jekyll(类使用的内容)
但是它比我这里的还要丑陋。我感谢你的任何意见。我感兴趣的是,为了清理,我应该做些什么,也许可以在应该做的地方添加类/方法,并使其更加Rubyesque。我会将代码更改为以下内容。这不是重构,因为它不等同于您的代码。特别是,它不像您的代码那样不一致。例如,当它提示时,它有时不会更改行,有时也不会像代码中那样更改行;我的代码从不改变一行。我的代码也总是在操作后打印列表,这与您的代码不同,您的代码不打印列表,尤其是在添加项时。此外,与您的代码不同,它有时不以句点结束消息,有时不以句点结束消息;我的代码中的消息永远不会以句号结尾
def prompt s
print "#{s}: "
gets.chomp
end
def list_items
@items.each{|k, v| puts "Flavor: #{k} - Cost: $#{v}"}
end
def sort_items
@items = @items.sort_by{|flavor, price| price}.to_h
list_items
end
puts "Welcome to d0nutz flavor menu"
@items = {}
loop do
puts(
?= * 30,
"(l)ist flavors",
"(a)dd a flavor",
"(d)elete a flavor",
"(e)xit application",
?= * 30,
)
case prompt("Your choice")
when ?l
list_items
when ?a
@items[prompt("Enter new flavor")] = prompt("Enter cost").to_i
sort_items
when ?d
@items.delete(prompt("Enter a flavor to remove")){|k| puts "#{k} not found"}
sort_items
when ?e
break
else
puts "That is not a recognised command"
end
end
一个提示:
division\u line='='*30
和将division\u line
。在没有任何提示的情况下阅读代码程序应该做什么是没有乐趣的。塔德曼-谢谢!我不知道我真的能做到。梅尔-我补充了一点解释。对不起,您的问题不是关于编码样式(您标记的)。这是关于建筑的。哇,这是很好的输入,谢谢。我没意识到。要知道存在,这很有道理。在你的代码中有一些我还没有学会的东西,所以今晚我将对此进行研究。我真的很感谢你花时间给我展示一个更好的方法。
def prompt s
print "#{s}: "
gets.chomp
end
def list_items
@items.each{|k, v| puts "Flavor: #{k} - Cost: $#{v}"}
end
def sort_items
@items = @items.sort_by{|flavor, price| price}.to_h
list_items
end
puts "Welcome to d0nutz flavor menu"
@items = {}
loop do
puts(
?= * 30,
"(l)ist flavors",
"(a)dd a flavor",
"(d)elete a flavor",
"(e)xit application",
?= * 30,
)
case prompt("Your choice")
when ?l
list_items
when ?a
@items[prompt("Enter new flavor")] = prompt("Enter cost").to_i
sort_items
when ?d
@items.delete(prompt("Enter a flavor to remove")){|k| puts "#{k} not found"}
sort_items
when ?e
break
else
puts "That is not a recognised command"
end
end