理想情况下,可重复使用的代码,我们可以将其置于隔离部分,并可以通过不同的操作调用它。
现在,如果我的parial _list.html.haml
文件有代码
#betting_list
%table.table
%tr
%th{:align => "left"}="Start time"
%th{:align => "left"}="Fixture"
%th{:align => "left"}="Won"
%th{:align => "left"}="Draw"
%th{:align => "left"}="Lost"
%th{:align => "left"}="Amount"
- @upcoming_event.each do |event|
%tr{:class => cycle('even', 'odd')}
%td=event.start_at.strftime("%b %d %H:%M")
%td=link_to event.name, event
- event.outcomes.each do |outcome|
- if outcome.label =="Won"
%td=outcome.odds
- if outcome.label =="Draw"
%td=outcome.odds
- if outcome.label =="Lost"
%td=outcome.odds
%td=event.bets.count
= paginate(@upcoming_event)
我们是否应始终将数据行或循环保存在不同的部分或?中。我是在delimma。我不需要重用那个循环部分来重用。
有可能重构这样的代码吗?
答案 0 :(得分:1)
您可以将循环更好地保留在新的部分中。
我也看到多重IF,有点令人困惑。
你可以这样做
- if (["Won","Lost","Draw"].include? outcome.label)
%td=outcome.odds
答案 1 :(得分:1)
对于不同的部分,这一切都取决于重用或可读性。一个正确命名的部分也可以帮助解释维护原因,特别是如果没有评论。
Case语句使它更具可读性。但这只是一种意见。
case outcome.label
when "Won", "Lost", "Draw"
%td=outcome.odds
end