我有一个很棒的工作时间表应用程序。现在一切运行良好,是时候重构了!尤其是有些观点真的很复杂。所以我想开始使用装饰器来清理它们。
另一件事是我使用了大量的服务对象。虽然它们很棒并且让我的模型保持干净,但在我的视图中使用它们并不是我想要的。我在这里寻找一些重构建议。让我们考虑以下视图代码片段:
.row
.span12#timesheet
- days = @timesheet_builder.get_days_in_month
%table.table.days
%tbody
- (1..days).each do |day_nr|
- activity_date = Date.new(@timesheet.year, @timesheet.month, day_nr)
- if @timesheet_builder.is_workday?(day_nr)
- day_type = "workday"
- else
- day_type = "non_workday"
%tr.day(class=day_type)
%td.date{ "data-title" => "#{I18n.t('.timesheet.day_nr')}" }
.day_abbr= @timesheet_builder.get_day_name(day_nr)
.day_nr= day_nr
您看到的是一个很棒的 TimesheetBuilder 服务对象,可以获取一个月中的天数并检查一天是否是工作日。根据结果,表格中的一行获得不同的颜色或其他标记。
它工作得很好,但我怎样才能重构它以使视图更简单?我可以在装饰器中使用服务对象吗?