Ya adelanté hace algunos meses, que la mejor forma de aprender bien a programar es sabiendo que es lo que no se debe hacer.
Hoy inaguro la primera entrega, de lo que serán varios artículos comentando código que encuentro, y que me parece un mal ejemplo en algún sentido
El código, al ir detrás de la funcionalidad, es algo en lo que el cliente no se fija, y suele ser un aspecto descuidado por los programadores.
Una aplicación puede funcionar a las mil maravillas estando mal escrita, y no dará mayores problemas hasta que tenga que ser modificada, ya sea para añadir nuevas funcionalidades, mejorar procesos, o para corregir algún problema que se ha encontrado. Más aún si la persona/equipo que se va a encargar de esta modificación, no es el mismo que creó la versión inicial del programa; o ha transcurrido ya algún tiempo desde que se escribiera por primera vez.
El código que os pongo de ejemplo, personalmente me cuesta de seguir.
La primera causa de ello, es la excesiva mezcla entre el código en si (PHP), y la presentación (HTML).
No se trata de abusar del modelo (MVC), y llevar las tres capas al extremo, pero si de encapsularlo y separarlo cuando sea conveniente.
A la dificultad en la legibilidad, contibuye también la indentación poco coherente.
En efecto, esta desestructuración del código, se debe habitualmente a modificaciones de última hora o plazos de entrega restringidos. Contra esto es difícil luchar, y solamente sería aplicable una reordenación, una reestructuración, o una refactorización a posteriori.
Otras veces, el problema viene dado por un excesivo Copiar y Pegar, y por tanto el embrollo sería evitable con un poco de método. Ya sea a la hora de escribir el código, o de evitar tanto copia y pega estructurando la aplicación de una forma más hábil.
Me encanta este tipo de post donde se puede aprender de los errores que a veces por desconocimiento, falta de tiempo o una mala puesta en práctica realizamos.
Genial!!! Espero que sigan las entregas con asiduidad.
Ojú! cuanta razon tienes Javi… yo desde luego intento siempre estructurar lo mejor posible el codigo, ya no solo por las personas a las q les pueda tocar modificarlo… si no por q a mi tambien me puede tocar hacerlo y mejor quenerlo todo bien claro.
Yo me he llegado a encontrar con paginas ASP, hechas por otras personas, de mil y pico lineas de código (es decir, q el modelo en 3 capas se lo pasaron por el forro), y sin una sola indentación!!!! todas las linas de codigo alineadas a la izquierda!!!!
Otro punto importante es el uso de comentarios que muy poca gente usa (como bien has apuntado, casi siempre por falta de tiempo). Pero un comentario a tiempo, por muy obvio q pueda parece, nunca está de mas.
La verdad es q la vida del desarrollador es algo digno de contar (no entiendo como con la de series que hacen, que si de policias, o medicos, o farmaceuticos… no hagan ninguna de un equipo de programadores jajajaja). Recuerdo una vez, que un jefe de proyecto me echó la bronca por poner comentarios dentro del codigo… segun él estos relentizaban la aplicacion >_<
En fins… estas cosas son las q hacen divertido nuestro trabajo… aunq a veces sea para echarse a llorar v_v'
La verdad es que estructurar el codigo HTML se hace practicamente obligatorio, sobretodo con las tablas…, yo inculo los pongo estructurados en los echo xD (que normalmente me ocupa 4 lineas xD).
Oye… no me pegueis, 3 capas? PHP – HTML – CSS ?
Saludos.
Tres capas es simplemente separar los niveles de datos, lógica, y presentación.
En este ejemplo concreto, lo suyo sería tender hacia dos, lógica y presentación, ya que no vale la pena encapsular el acceso a BD.
Lo cual me enseña lo mal que está diseñado PHP… Programar ahí es diabólico, y es normal que se cometan errores. Se ha aprendido mucho desde que las cosas se tenían que hacer artesanalmente. Parece que estamos haciendo lo mismo en programación.
Saludos!
diego
¿mal diseñado o mal utilizado?
Por ejemplo en mi script, tengo separado el codigo PHP y el codigo HTML, haciendo que si quiero cambiar el titulo, no tenga que ir buscando en miles de paginas donde esta el maldito header.
Obligar a separar la logica de la presentacion seria una burrada, tal como esta ahora cualquiera puede aprenderlo y cuando profundizas pues iras tomando buenas practicas.
Gracias Guti por la aclaracion, jeje.
Estoy completamente de acuerdo. PHP es un lenguaje potente que permite realizar casi cualquier cosa que se proponga: te da las posibilidades.
Creo que nadie que haya hecho un par de programas se le ocurre hacer una aplicación que implemente toda su funcionalidad en la función principal. Todos dividimos en funciones, clases, objetos o la estructura que sea más adecuada de las que nos proporcione el lenguaje.
Con PHP pasa lo mismo, el lenguaje te permite hacer lo que quieras pero tu diseño debería tener las funciones para el acceso a los datos, realizar operaciones comunes, las que generan el html de salida… sencillamente por claridad y para facilitarte modificaciones futuras pero como una decisión personal no forzado por restricciones del propio lenguaje
no se porque ese codigo me resulta familiar, luego me explicas que no te gusta del codigo ok?
Y encima con tablas!, bufff
PHP es de los pocos lenguajes que conozco con los que puedes armar un follon de tres pares de cojones si te da por empezar a mezclarlo con HTML y pasarte por el forro la identacion, encapsulacion y demas.
Spaguetti code del bueno!!
Por desgracia, la mayoría de los que yo conozco también lo permiten: ASP, PHP, JSP, …