Yoda conditions, código menos legible pero menos propenso a errores

El otro día me encontré leyendo código ajeno de PHP una condición «invertida»: primero se presentaba el valor buscado y luego se comparaba con la variable:

if('aguja' == $pajar){ // la encontraste!

Me dejó completamente descolocado porque supone leer al revés, y es en honor a ese personaje de Star Wars que anteponía predicado a sujeto que se ha nombrado esta manera de hacer las condiciones.

¿Los motivos para usarla? Con operadores de igualdad normales (==) en algunos lenguajes podrías escribir por error if ( $pajar = 'aguja' ), lo que asignaría el valor en vez de comparar (y siempre daría true); sin embargo, si el literal está a la izquierda ('aguja' == $pajar), esa asignación daría un error de sintaxis y el bug saltaría automáticamente.

Fuente: Yoda conditions

Primeros pasos para domar un código legacy

Me gusta el reto de llegar a un proyecto ajeno y domarlo. Entender como lo diseñaron y ver como mejorarlo. Pero antes de poder ampliar ese código hay que estabilizarlo para poder caminar seguros. El objetivo con el que atacamos ese código es poder tener una base de código entendible y con cobertura de tests que nos dé tranquilidad.

El enfoque es gradual y seguro, priorizando la comprensión del código, las pruebas y la refactorización incremental. Haremos primero los pasos 0, 1 y 2 y luego realizaremos los pasos 3 por bloques de funcionalidad.

Seguir leyendo Primeros pasos para domar un código legacy