СтарыйОтчет
2. НовыйОтчет
В каждом много полей, пусть 10.
НовыйОтчет создается из СтарыйОтчет путем некоторой модификации полей.
Вопрос. Как это сделать? Нормально ли передать старый отчет в конструктор нового отчета и там присвоить поля после соответствующей модицикации?
Именованный конструктор или перегрузка дкфолтного конструктора если есть в языке
из наводящих вопросов - а из этих 10-ти полей они все одинаковые? какой процент должны отличаться? Что это за поля? Почему они отличаются? Возможно есть набор полей которые по смыслу можно объединить в отдельный тип. К чему вопрос - если это два разных класса, значит что бы "можно было засэтать в конструкторе" у другого класса будет так или иначе какое-то представление о внутренней структуре первого класса. И вопрос почему это разные классы в целом.
Два варианта - либо конструктор, либо фабричный метод (или сервисный метод), создающий новый отчет из старого. Выбор зависит от: - связаны ли эти два отчета по бизнесу? - работают ли с новым отчетом, если соответствующий старый отчет не существует? - будет ли старый отчет в будущем удален из системы?
НовыйОтчет - это скорее нечто совершенно другое, нежели старый. И поля нового получаются где-то через какую-то модификацию полей старого, где-то 1 в 1 переходят. Эти старые новые отчеты вообще разные типы отчетов. Не просто старый новый на самом деле а именно бизнесовый смысл разный - они должны быть разными. Да, у нового есть представление о структуре старого
По бизнесу связаны С новым работают, если старый не существует Да, старый отчет будет удален
тогда NovyOtchetFromStaryOtchetConversionService. тогда модель нового отчета и код, который работает с новым отчетом, не будет знать о старом отчете и тогда удаление старого отчета пройдет максимально безболезненно.
Но у тебя появляется процедура которая знает об обоих, зачем? Удобнее тестить? Нет. Удобнее менять? Нет
Удобно херануть разом все штуки завязанные на старый отчёт, и ничего нигде не сломать
в идеале, это должно быть единственное место, которое знает об обоих. Лучше изоляция, проще зависимости.
Хз, как по мне с учётом ограниченной информации о задаче я бы не вводил новых сущностей
Согласен, то самый незначительный вопрос, на обсуждение которого тратится больше всего времени)
Обсуждают сегодня