如何解决有什么办法可以将此代码重构得更小一些?
| 我对原始代码进行了很好的修改,但是我没有看到任何方法来压缩这种较小的代码,而不会将检查内容植入模块中的另一个文件中。正则表达式文本对于每个when / x /来说都是不同的,因此我无法想到它们无法进一步组合 case state
when /OH|PA|MN/
if @browser.text.include?(\"My text\")
raise \"x\" unless /foo/.match(@browser.text)
raise \"y\" unless /foo2/.match(@browser.text)
raise \"z\" unless /foo3/.match(@browser.text)
else
raise \"x1\" unless /foofoo/.match(@browser.text)
raise \"y1\" unless /foofoo2/.match(@browser.text)
raise \"z1\" unless /foofoo3/.match(@browser.text)
end
when /IL|VA/
if @browser.text.include?(\"My text\")
raise \"x\" unless /foo/.match(@browser.text)
raise \"y\" unless /foo2/.match(@browser.text)
raise \"z\" unless /foo3/.match(@browser.text)
else
raise \"x1\" unless /foofoo/.match(@browser.text)
raise \"y1\" unless /foofoo2/.match(@browser.text)
raise \"z1\" unless /foofoo3/.match(@browser.text)
end
when /WI|SC|TN|IN|IA/
if @browser.text.include?(\"My text\")
raise \"x\" unless /foo/.match(@browser.text)
raise \"y\" unless /foo2/.match(@browser.text)
raise \"z\" unless /foo3/.match(@browser.text)
else
raise \"x1\" unless /foofoo/.match(@browser.text)
raise \"y1\" unless /foofoo2/.match(@browser.text)
raise \"z1\" unless /foofoo3/.match(@browser.text)
end
when /SC/
if @browser.text.include?(\"My text\")
raise \"x\" unless /foo/.match(@browser.text)
raise \"y\" unless /foo2/.match(@browser.text)
raise \"z\" unless /foo3/.match(@browser.text)
else
raise \"x1\" unless /foofoo/.match(@browser.text)
raise \"y1\" unless /foofoo2/.match(@browser.text)
raise \"z1\" unless /foofoo3/.match(@browser.text)
end
when /GA/
if @browser.text.include?(\"My text\")
raise \"x\" unless /foo/.match(@browser.text)
raise \"y\" unless /foo2/.match(@browser.text)
raise \"z\" unless /foo3/.match(@browser.text)
else
raise \"x1\" unless /foofoo/.match(@browser.text)
raise \"y1\" unless /foofoo2/.match(@browser.text)
raise \"z1\" unless /foofoo3/.match(@browser.text)
end
else
raise \"Not a valid state\"
end
解决方法
我认为它与您的实际代码不同,因此您无法
if state =~/OH|PA|MN|IL|VA|WI|SC|TN|IN|IA|SC|GA/
if @browser.text.include?(\"My text\")
raise \"x\" unless /foo/.match(@browser.text)
raise \"y\" unless /foo2/.match(@browser.text)
raise \"z\" unless /foo3/.match(@browser.text)
else
raise \"x1\" unless /foofoo/.match(@browser.text)
raise \"y1\" unless /foofoo2/.match(@browser.text)
raise \"z1\" unless /foofoo3/.match(@browser.text)
end
else
raise \"Not a valid state\"
end
因为现在可以。因此,如果您真的想要一个答案,为什么要发布可以轻松减少的伪造代码?
, raise \"Not a valid state\" unless %w[OH PA MN IL VA WI SC TN IN IA SC GA].include?(state)
if @browser.text.include?(\"My text\")
raise case @browser.text
when /foo/; \"x\"
when /foo2/; \"y\"
when /foo3/; \"z\"
end
else
raise case @browser.text
when /foofoo/; \"x1\"
when /foofoo2/; \"y1\"
when /foofoo3/; \"z1\"
end
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。