asos de teste E declarações de asserção

O código emessa questã faça-me pensa

assert(value>0); //Precondition
if (value>0)
{
  //Doit
}

Eu nunca escrevo a declaração if. Afirmar é suficiente / tudo o que vocêpod Faz. "Crash early, crash freqüentemente"

CodeComplete estados:

A declaração de asserção torna o aplicativo CorretoO teste if torna o aplicativo Robusto

Acho que você não tornou um aplicativo mais robusto corrigindo valores de entrada inválidos ou ignorando o código:

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

Essas correções são baseadas em suposições feitas sobre o mundo exterior. Somente o chamador sabe o que "é um valor de entrada válido" para sua função e deve verificar sua validade antes de chamar sua função.

Parafrasear CodeComplete: "Programas do mundo realtornar-s muito bagunçado quando nós don't confie apenas em afirmações. "

Pergunta: Estou errado, teimoso, estúpido, não defensivo demais ...

questionAnswers(9)

yourAnswerToTheQuestion