我给一个新创建的(Icalendar-)对象赋值:
def map_to_cal_event
e = Icalendar::Event.new
e.dtstart = to_icaldate start.to_datetime
e.dtend = to_icaldate self.end.to_datetime if self.end.present?
e.summary = title
e.description = description
e.url = timetable_url
e.categories = categories
e.location = location
e
end
使用Rubocop它是抱怨Metrics/AbcSize: Assignment Branch Condition size for map_to_cal_event is too high. [<8, 21, 1> 22.49/17]
对我来说这似乎是一个很普通的任务。
那么,如何重构此方法以满足Rubocop?或者我应该把它放在目录里吗?
2条答案
按热度按时间qlvxas9a1#
这应该满足Rubocop,在一个单独的方法中使用
tap
方法定义一个新的事件,然后将另一个块传递给它,并进行所有赋值。5n0oy7gb2#
我还没有完成ABC指标的优化,但是我想通过查看代码来尝试的一件事是将dtstart和dtend的函数替换为一个辅助函数,即。
(作为答案发布,而不是作为评论,以便能够格式化代码)