Нет, не имеет смысла всегда создавать конструкторы с нулевым аргументом, следующие сценарии являются примерами, в которых имеет смысл предоставить хотя бы конструктор a-some-аргумента
- Обязательные зависимости, которые сам класс не может создать.
- Нет разумных значений по умолчанию для свойств.
Случаи, когда вы хотите иметь / нуждаться в конструкторе с нулевым аргументом:
- Вы хотите соответствовать спецификации JavaBeans (имеет смысл для простых объектов данных).
- Все поля могут быть инициализированы с использованием разумных значений по умолчанию.
- Вы хотите использовать фреймворк, который нуждается в этом.
Одним из неверных аргументов в пользу наличия конструктора с нулевым аргументом, на мой взгляд, является длинный список аргументов. Для этого есть лучшие решения, чем принятие инициализации объекта, который не находится в безопасном состоянии после создания:
- Использование шаблона Builder.
- Предоставить специализированные объекты-контейнеры для настройки экземпляра с помощью конструктора.
- Укажите несколько конструкторов, в которых базовые аргументы каждого являются обязательными параметрами, которым не могут быть назначены значения по умолчанию.