Код в этом вопросе заставил меня задуматься
assert(value>0); //Precondition
if (value>0)
{
//Doit
}
Я никогда не пишу оператор if. Достаточно заявить о себе / все, что вы можете сделать. «Сбои рано, сбои часто»
В CodeComplete говорится:
- Оператор assert делает приложение правильным
- If-test делает приложение надежным
Не думаю, что вы сделали приложение более надежным, исправив недопустимые входные значения или пропустив код:
assert(value >= 0 ); //Precondition
assert(value <= 90); //Precondition
if(value < 0) //Just in case
value = 0;
if (value > 90) //Just in case
value = 90;
//Doit
Эти исправления основаны на ваших предположениях о внешнем мире. Только вызывающий знает, что такое «допустимое входное значение» для вашей функции, и он должен проверить его действительность, прежде чем он вызовет вашу функцию.
Перефразируя CodeComplete: «Реальные программы < em> становится слишком беспорядочным, когда мы не полагаемся исключительно на утверждения ".
Вопрос: Я не прав, упрямый, глупый, слишком не оборонительный ...