Utilizamos una versión modificada de assert, según el comentario de JaredPar, que actúa como un contrato. Esta versión está compilada en el código de liberación, por lo que hay una sobrecarga de pequeño tamaño, pero está deshabilitada a menos que se establezca un interruptor de diagnóstico, de manera que se minimice la sobrecarga de rendimiento. Nuestro manejador de afirmaciones en esta instancia puede configurarse como deshabilitado, modo silencioso (por ejemplo, registro a archivo) o modo ruidoso (por ejemplo, mostrar en pantalla con cancelar/ignorar, donde abortar arroja una excepción).
Utilizamos pruebas de regresión automática como parte de nuestras pruebas previas a la publicación, y las afirmaciones son muy importantes aquí ya que nos permiten encontrar posibles errores internos que no se pueden recoger a nivel de GUI, y pueden no ser inicialmente fatales en un nivel de usuario. Con la automatización, podemos ejecutar las pruebas con y sin diagnósticos, con poca carga adicional a la del tiempo de ejecución, por lo que también podemos determinar si las afirmaciones tienen algún otro efecto secundario.
Una cosa de la que hay que tener cuidado es que tiene sus efectos secundarios. Por ejemplo, puede ver algo como assert (MyDatabasesIsOk()), que corrige errores inadvertidamente en la base de datos. Este es un error, ya que nunca debe cambiar el estado de la aplicación en ejecución.
No me gusta cómo se hace la pregunta como la veo, él dice "Lo sé mejor, si no lo haces te perseguiré" –
Bueno, es claramente subjetivo. En mi opinión, también es dudoso argumentativo, pero esperaría y vería qué debate se desarrolla. – EBGreen
Me complace editarlo ... Realmente me gustaría escuchar un buen razonamiento. No estoy fuera para crear una pelea. Lo siento si suena agresivo. probablemente reprimió los sentimientos de haber sido forzados a trabajar de esa manera. –