Передайте в конструктор вещи, которые являются неизменными свойствами объекта.Когда возможно, сделайте все свойства объекта неизменными.Взятый в полной мере, это позволяет неизменяемости всего объекта.
Неизменяемые свойства, назначаемые при конструировании, позволяют избежать различных условий гонки (особенно в многопоточных средах) и помогают гарантировать, что объект всегдапоследовательный, исключающий возможность многих видов ошибок.Принудительно определяя свойства при конструировании, вы избегаете обширного кода проверки ошибок.Как только весь объект может быть неизменным, появляются возможности для совместного использования эквивалентных объектов, что повышает производительность памяти.
Если параметр не является неизменным свойством объекта, то назначение его в конструкторе - просто удобство.Как правило, он должен быть назначен с установщиком, чтобы уменьшить сложность кода (так как установщик требуется в любом случае).Если конструктор вызывается очень часто, удобство параметра может стоить этой дополнительной сложности.