Casos de prueba Y declaraciones de afirmación

El código enesta pregunt me hizo pensa

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

Nunca escribo la declaración if. Afirmar es suficiente / todos ustedeslat do. "Choque temprano, choque a menudo"

CodeComplete estados:

La declaración de aserción hace que la aplicación sea correcta La prueba if hace que la aplicación sea robusta

No creo que haya hecho una aplicación más robusta corrigiendo valores de entrada no válidos u omitiendo 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

Estas correcciones se basan en suposiciones que hizo sobre el mundo exterior. Solo la persona que llama sabe qué es "un valor de entrada válido" para su función, y debe verificar su validez antes de llamar a su función.

Parafrasear CodeComplete: "Programas del mundo realvolvers demasiado desordenado cuando no confíe únicamente en afirmaciones ".

Pregunta: ¿Estoy equivocado, terco, estúpido, demasiado no defensivo ...

Respuestas a la pregunta(9)

Su respuesta a la pregunta