Код этот вопрос заставлял меня думать
assert(value>0); //Precondition
if (value>0)
{
//Doit
}
Я никогда не пишу if-statement. Утверждение достаточно/все, что вы можете сделать. "Сбой рано, часто сбой"
CodeComplete утверждает:
- Утверждение-выражение делает приложение правильным
- В случае if-теста приложение Robust
Я не думаю, что вы сделали приложение более надежным, исправив недопустимые входные значения или пропустив код:
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: "Реальные программы становятся слишком грязными, когда мы не полагаемся исключительно на утверждения".
Вопрос: Я ошибаюсь, тупоумный, глупый, слишком не защищенный...