Проверка достоверности параметров явно важнее для всех открытых функций, чем для защищенных или частных. Поскольку ваш конструктор является общедоступным, тогда имеет смысл проводить четкую проверку.
Не всегда возможно проверить действительность во всех случаях - вопрос о том, что является действительным или нет, например, небо == синий, может отличаться в контексте, к которому у вас нет доступа.
Я предпочитаю защитный код. Меньшее количество операторов, которые выполняются до обнаружения несогласованности данных, означает, что утверждение происходит ближе к оператору, который привел к проблеме, что облегчает / ускоряет поиск.
Это означает, что я предпочитаю провести некоторую проверку работоспособности параметров для большинства методов. Я часто буду обходиться без проверки определенных частных методов, хотя вы рискуете, что кто-то (может быть, вы) когда-нибудь сделает их защищенными или общедоступными, и вы также упускаете возможность обнаружить несоответствие данных на один шаг ближе к источнику.