На самом деле есть веская причина, чтобы включить его, не упомянутый в этих ответах:
Если существование конструктора без аргументов явно является частью контракта для вашего объекта, то это должно быть явно указано .
Если вы явно намереваетесь предоставить клиенту возможность подкласса кода, например, например, Java Swing - это хорошая идея явно сделать доступным конструктор без аргументов, даже если других конструкторов нет. В противном случае, если другой программист, по их мнению, решит создать другой конструктор, новый явный конструктор удалит неявный конструктор без аргументов и нарушит код клиента.
Если код подклассифицирован в вашей собственной кодовой базе, то это будет отображаться как ошибка компилятора, но если ваш код должен быть опубликован как jar, и субклассифицирован клиентом, ошибки компилятора не будет.
Конечно, вы можете утверждать, что, если это будет частью вашего контракта, вы должны пройти тест на джунит, и вы будете правы! Но если вы работаете с большой базой кода, где тестам для ежедневной сборки требуются часы, что нарушает вашу ежедневную сборку, потому что вы забыли, что нужно явно создавать конструктор без аргументов при добавлении конструктора, это огромная трата времени, когда явный конструктор и комментарий избежал бы любой вероятности ошибки.
Цель хорошего кода - сделать так, чтобы другой разработчик как можно проще изменил его без ошибок!