Если присвоения должны выполняться в определенном порядке, вы знаете, что выполняете операции внутри конструктора
Признак хорошего тона — не делать ничего в конструкторе кроме того, что необходимо. А все, что необходимо, — это проверять предоставленные аргументы, а затем присваивать их в качестве значения для свойств сервиса.
Кстати, слово «текущий» явно указывает на то, что это контекстуальная информация, и ее нужно передавать в качестве аргументов метода, например «текущее время», «идентификатор текущего пользователя», «текущий веб-запрос» и т.д.
Дополнительным преимуществом станет то, что в тестах будет проще описывать ожидаемое поведение. Это поможет подставлять вместо вызова функции другие вызовы, пользовательский код или даже целую библиотеку, демонстрирующую аналогичное поведение.
Работает ли функция с объектами вместо примитивных типов значений?
Чтобы определить, нужно ли создавать объектную зависимость, ответьте на следующие вопросы:
• Будете ли вы в дальнейшем менять или улучшать поведение класса посредством этой зависимости?
• Есть ли в поведении класса сложность, которую невозможно описать в нескольких строках кода?