Desde que escribí por primera vezprácticas de programación defensivas
if ($a = 5) {
# do something with $a, e.g.
print "$a";
}
y pasó por la sesión desconcertante normal de
- qué es el resultado siempre es cierto
- qué es de $ a Siempre 5
hasta que me di cuenta, había asignado 5 a $ a, en lugar de realizar una comparación.
Así que me decidí a escribir ese tipo de condición anterior como
if (5 == $a)
en otras palabras:
Coloque siempre el valor constante en el lado izquierdo del operador de comparación, lo que resulta en un error de compilación , si olvida agregar el segundo signo "=".
que tienden a llamar a este defensiva de codificación y tienden a creer que es un primo a de programación defensiva, no en la escala algorítmica, pero la palabra clave por palabra clave.
¿Qué prácticas defensivas de codificación ha desarrollado?
una semana más tarde:
Un gran "gracias" a todos los que respondieron o podría añadir otra respuesta en el futuro.
Desafortunadamente (¡o afortunadamente!) No hay una sola respuesta correcta. Para eso mi pregunta fue amplia, pidiendo más opiniones o aprendiendo de la experiencia, en lugar de hechos.
Pensé que, si recuerdo haberlo hecho, puedo recordar el == (tristemente) – gbarry
No me gusta la sacudida de la línea de pensamiento normal; No estoy probando 5, estoy probando $ a. Me resulta más fácil si la cantidad que se prueba está en primer lugar. Tal vez soy una minoría, pero no me gusta la técnica, aunque la recomiendan personas a las que respeto. –
Sería mejor si no puede asignar nada a las variables en caso de comparación. Se creó Java y C# porque C++ estaba lleno de trampas como esa. Entonces, ¿por qué este problema de asignación todavía existe? – Silvercode