Rubocop を満足させるために割り当てをリファクタリングするにはどうすればよいでしょうか?
概要
新しく作成した (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:map_to_cal_even の割り当て分岐条件のサイズが大きすぎます。 [<8, 21, 1> 22.49/17]
それは私にとって非常に一般的な任務のように思えます。 では、rubocop を満たすためにこのメソッドをリファクタリングするにはどうすればよいでしょうか?それとも無視リストに入れるべきでしょうか?
解決策
これは Rubocop を満足させる必要があり、ブロックのタップ メソッドを使用して別のメソッドで新しいイベントを定義し、すべての割り当てを含む別のブロックをそれに渡します。
def map_to_cal_event
build_new_cal_event do |e|
e.dtstart = dtstart
e.dtend = dtend
e.summary = title
e.description = description
e.url = timetable_url
e.categories = categories
e.location = location
end
end
def build_new_cal_event(&block)
Icalendar::Event.new.tap(&block)
end
def dtstart
to_icaldate(start.to_datetime)
end
def dtend
to_icaldate(self.end.to_datetime) if self.end.present?
end