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