Это не совсем защитное программирование. DP, воплощенный, в частности, в классических 90-х годах, том Макконнелла Code Complete , на самом деле предназначен для постепенного накопления контрфорсов в коде, которые определяются использованием. Итак, вы начинаете с некоторых базовых утверждений, а затем, когда видите, что что-то проходит через экран, вы добавляете больше.
Лично я склоняюсь к стороне Бертрана Мейера в этом спектре: контракты. Вопрос о том, сможете ли вы действительно достичь уровней «доказательства», к которым он стремится, широко обсуждается, но его стремление к защитному программированию блестяще. Чистая сеть - это любая система, которая не знает, как она может выйти из строя, пока пользователь не покажет, что это работа безумия. Компонент должен делать только одну вещь и точно предписывать, что ему нужно для этого (в предварительных условиях) и гарантировать результат (публикацию), учитывая, что больше ничего не происходит в процессе (инварианты).