#76 Siempre me ha asaltado una duda cuando leo el código de Menéame. ¿Qué razón hay para no usar el patrón MVC o MTV? No, no me refiero a Rails, Django, Symfony, etc. eso son implementaciones en forma de frameworks. Una implementación de MVC puede ser extremadamente sencilla, sin depender de código externo ni meter frameworks enormes. MVC tiene casi 30 años y su diseño es claramente muy eficaz. Además, probablemente muchos de los fallos de seguridad encontrados no hubiesen sido posibles usando MVC y limpiando la entrada de datos desde un sitio centralizado. En general, muchos de los fallos de XSS son debidos a que alguien se olvidó de limpiar la entrada en una parte del código. Hay varios ejemplos de MVC en PHP sin usar frameworks, incluso sin necesitar OOP:
Otra cosa es que en el código de Menéame hay partes en las que las consultas están escritas directamente en la vista. Tampoco están encapsuladas en funciones (en el artículo de jcarlosn he puesto un ejemplo), que harían más fácil el mantenimiento y la legibilidad.
Por cierto, creo que el código sería más robusto si hubiera más tests. No sólo para probar que funciona, sino para evitar regresiones y para asegurar que la API es estable y no se ha roto nada en un commit. Hace tiempo que sigo el desarrollo basado en ramas (del cual UQDS es una implementación: www.divmod.org/trac/wiki/UltimateQualityDevelopmentSystem) y lo cierto es que la cantidad de fallos ha disminuido y la estabilidad de mi código ha aumentado notablemente.
Por otra parte, de la forma en que Twitter no es una aplicación típica (y de ahí que sufra tantos bajones, al ser diseñada como una aplicación normal), sino una aplicación de mensajería asíncrona con suscriptores y publicadores, tal vez Menéame podría beneficiarse de una arquitectura basada en servicios a la hora de escalar. Esto son cábalas, así que hay que tomárselas con un grano de sal.
Bueno, esto sólo son consejos y son susceptibles de cualquier crítica
www.fiftyfoureleven.com/weblog/web-development/programming-and-scripts
www.tonymarston.co.uk/php-mysql/model-view-controller.html
toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html
Otra cosa es que en el código de Menéame hay partes en las que las consultas están escritas directamente en la vista. Tampoco están encapsuladas en funciones (en el artículo de jcarlosn he puesto un ejemplo), que harían más fácil el mantenimiento y la legibilidad.
Por cierto, creo que el código sería más robusto si hubiera más tests. No sólo para probar que funciona, sino para evitar regresiones y para asegurar que la API es estable y no se ha roto nada en un commit. Hace tiempo que sigo el desarrollo basado en ramas (del cual UQDS es una implementación: www.divmod.org/trac/wiki/UltimateQualityDevelopmentSystem) y lo cierto es que la cantidad de fallos ha disminuido y la estabilidad de mi código ha aumentado notablemente.
Por otra parte, de la forma en que Twitter no es una aplicación típica (y de ahí que sufra tantos bajones, al ser diseñada como una aplicación normal), sino una aplicación de mensajería asíncrona con suscriptores y publicadores, tal vez Menéame podría beneficiarse de una arquitectura basada en servicios a la hora de escalar. Esto son cábalas, así que hay que tomárselas con un grano de sal.
Bueno, esto sólo son consejos y son susceptibles de cualquier crítica