Buenas prácticas – Flujo del programa lineal
Pincha en la imagen para verla ampliada. Oringinal en la tira de xkcd, GOTO.
Podría reestructurar el flujo del programa, o podría usar un pequeño “GOTO”…
Bah, que le den a las buenas prácticas. Qué mal puede hacer? goto main_sub2; *COMPILE*
Yo empecé a programar a los 10 años, así que he sufrido el BASIC, sus líneas de código numeradas… pero sobre todo los GOTOs en programas monolíticos de miles de líneas… así que la modularización, reutilización y control de flujo los tengo muy interiorizados.
Hoy en día espero que ningún lenguaje de alto nivel mantenga algo que únicamente debería existir en lenguajes de bajo nivel (recordáis el ensamblador del Motorola 8Mhz?), así que resulta complicado explicar brevemente a todos los que os habéis iniciado en lenguajes más modernos por qué hay que modularizar, reutilizar y mantener un flujo lineal.
Pero todos los lenguajes de alto nivel modernos tienen lógicamente estructuras de control de flujo, algunas TAN odiosas para mí como break o continue de Java que afortunadamente sólo utilizan una ínfima minoría de “profesionales”, para mí leerlas es como recibir sendas bofetadas y mi opinión de tu profesionalidad me la ahorro.
Cuesta concienciar de por qué no utilizar más de un return por cada método, o por qué evitar salidas inesperadas lanzando excepciones o invocando returns en métodos void… Parece inocuo, al fin y al cabo es algo que puedes ver en los códigos fuentes de casi todos los frameworks, pero qué curioso, los bugs tiene predilección por estos métodos en tu código.
Ójala pudiera invocar al monstruo del GOTO cada vez que tengo que arreglar uno de esos…
MORALEJA
Las buenas prácticas son buenas por algo, porque antes de ti ha habido miles de profesionales que durante décadas se han pelado con tu mismo problema: mantén un flujo lineal, una entrada y una salida en cada método.
No son obligatorias de seguir, pero no seguirlas supone un coste… No te quejes cuando tengas que pagarlo, aunque desgraciadamente suele ser otro el que se encuentra tus muertos bajo la alfombra.
break
No related posts.






























