En cuanto a este puramente desde un punto de vista semántico - No puedo pensar en un solo caso donde no hay una cosa implícita para cada caso.
si el automóvil no se detiene antes de llegar al muro, chocaré, de lo contrario no chocaré.
Semántica aparte:
La respuesta a esta pregunta depende del entorno, y lo que el resultado de un error es.
¿Código comercial? Haz lo que dicen tus estándares de codificación.
En mi humilde opinión, encontrará que deletrearlo, aunque inicialmente parece demasiado trabajo, será invaluable en 10 años a partir de ahora cuando vuelva a visitar ese código. Pero, ciertamente, no sería el fin del mundo si te perdieras una importante 'anti condición'.
Sin embargo: ¿Código de seguridad, de seguridad o de vida crítica? Esa es una historia diferente.
En este caso, desea hacer dos cosas.
En primer lugar: en lugar de probar una falla, quiere probar que hay no una falla. Esto requiere una vista pesimista sobre la entrada a cualquier módulo. Usted asume que todo está mal hasta que demuestre que es correcto.
Segundo: en la vida crítica: NUNCA quiere lastimar a un paciente.:
bool everyThingIsSafe = true;
if(darnThereIsAProblem())
{
reportToUserEndOfWorld();
}
return everyThingIsSafe;
Oops. Olvidé configurar everyThingIsSafe como falso.
La rutina que llamó a este snippit ahora se le mintió. Si hubiera inicializado evertThingIsSafe en falso, siempre estoy a salvo, pero ahora necesito la cláusula else para indicar que no hubo un error.
Y sí, podría haber cambiado esto a una prueba positiva, pero entonces necesito el para manejar el error.
Y sí, podría haber asignado everyThingIsSafe() la devolución inmediata del cheque. Y luego probó la bandera para informar un problema. Un otro implícito, ¿por qué no ser explícito?
Estrictamente hablando, lo implícito que esto representa es razonable.
Para un auditor de seguridad/FDA, tal vez no.
Si es explícito, puede apuntar a la prueba, es lo contrario, y que manejé ambas condiciones con claridad.
He estado codificando dispositivos médicos durante 25 años. En este caso, quiere el otro, quiere el valor predeterminado en el caso, y nunca están vacíos. Desea saber exactamente qué va a suceder o lo más cerca posible. Porque pasar por alto una condición podría matar a alguien.
Busque Therac-25. 8 gravemente herido. 3 muertos.
Intento no "debería" en mis compañeros. Tiende a ser complicado. Use un else solo si tiene sentido. – kbrimington
"si" siempre escuchas a tus compañeros de trabajo, retomarás sus malos hábitos. No hay necesidad de decir "else", puedes aprender por ti mismo ". – Laramie
Creo que su programador senior en realidad dijo: "debería pensar en la parte else en todas las condiciones". He visto demasiadas fallas en el código debido a la falta de bloques adicionales. –