В нескольких местах моего приложения мне нужно взять Seq[SalesRow]
и вернуть Map[String,SalesRow]
, где строка - это название страны.
Мне нужно использовать это в нескольких местах,Например, я беру список всех SalesRows и получаю глобальную разбивку продаж по странам.Но в других местах я хочу разбить свои продажи по месяцам, а затем по странам (поэтому Map[Month,Seq[SalesRow]]
становится Map[Month,Map[String,Seq[SalesRow]]]
) - в других местах я хочу разбить по дням, а затем по странам.
Мой вопрос: куда я помещаю (небольшое) количество логики, которая берет Seq[SalesRow]
и возвращает карту стран в строках?Прямо сейчас я помещаю это в метод сопутствующего объекта, SalesRow.byCountry(rows : Seq[SalesReport]
.Это оптимально?
Мне пришла в голову немного более сумасшедшая идея - создать неявное преобразование из Seq[SalesRow]
в EnhancedSalesRowSeq
, которое имеет метод экземпляра byCountry
.Это мне нравится, потому что операция применима к любой последовательности SalesRows.
Это хорошая идея?
Является ли добавление логики к объекту-компаньону моим лучшим выбором или лучшеварианты?
Спасибо.