Archivos de octubre,2010

¿La Programación Orientada a Objetos mala para Drupal?

octubre 13, 2010
Después de un buen tiempo me animé a escribir sobre algún tema relacionado a lo que día a día hago, y que mejor comenzar haciéndolo desde un punto de vista medio extraño que deseo expresar, mi visión acerca de Drupal y los miles de intentos de querer adecuar ésta a una Programación Orientada a Objetos. Siempre me he preguntado por que los desarrallodares de PHP más aún de Drupal son más felices adecuando sus soluciones a la necesidades que tienen con la serie de Módulos que tan buenamente Drupal nos proporciona frente al hecho de ver a a desarrolladores acostumbrados muchos años a un desarrollo tradicional de POO (más si provienen de Java) adecuarse a un framework como lo es Drupal.

Imagen Tomada de : Groups Drupal Link
drupal-ecosystem.png

Yo estoy más que segura que muchos de ustedes no estarán deacuerdo conmigo pero es lo que he venido observando, e incluso me ha pasado a mí cuando intentaba armar un sistema para una compañia, el tema de POO siempre invadía mi mente de querer organizarlo todo como me habian enseñado en la Universidad donde tanto nos exigen en todo, la muy querida POO y mayormente usando Java O.O, pensamos en Java,comemos con Java y hasta soñamos con Java :D bueno también con .Net. También antes de meterme al tema quiero comenzar resaltando y que no olvidemos que "PHP es un Lenguaje Interpretado" y con base en la estrucutura a un grupo CGI y NO esta basado en un diseño Orientado a Objetosinicial; que ésta se esté moviendo a una estructura más Orientada a Objetos ya en PHP5 y el nuevo PHP6 es diferente.

Ahora vayamos a Drupal, Drupal no fue diseñando con esta lógica de clases, abstracción y polimorfismo admitámoslo, por que queremos forzar algo? Una de las cosas que me hizo sentir mejor a esta forma de pensar que tenia en la cabeza fue encontrar el post de Matt Butcher quién ha escrito buenos detalles relacionado al tema y que pueden ver aquí

Como Matt mismo señala con la frase "Las cosas fáciles ahora son más difíciles"; el problema no es que exista la POO no! no he dicho eso, no me entienda mal Ud!, ni estoy diciendo que sea mala prácticarla, no se proecupe! no y por favor si está leyendo algún profe que me enseñó este post, Hola? no se preocupe Profe, aprendí bien mis leccciones de clases :D)tampoco estoy diceindo que un desarrollador promedio no pueda aplicar esta técnica con Drupal por que si lo hacen; el punto está enfocado más al hecho de que el core o núcleo de Drupal durante mucho tiempo ha sido alimentado y desarrollado de una manera compleja para facilitar la creación de Módulos ahora en Drupal. Pero que no solo la base de código es compleja. Es la gran cantidad de subsistemas, de los métodos de datos que pasan, de los convenios especializados, incluso de la terminología es algo compleja. Pretender ligar la POO en este cuadro no es simplificar las cosas.

Realmente existe un dilema en lo que está sucediendo y muchos acuerdos y desacuerdos frente al tema. En conclusión como menciona Matt "Lo que existe es una profunda diferencia filosófica entre arquitecturas orientada a objetos y la disposición de Drupal's laissez-faire ¿Por qué tratar de mezclar a los contrarios?

Drupal 7 con todos sus nodos, campos, entidades, usuarios, comentarios, los menús, las vistas, consultas, filtros, acciones, las funciones, preprocesadores, themes, módulos ... y que para Drupal 8, se esta agregando Contextos, plugins .... Estos subsistemas Oreintado a Objetos nuevos tendrán (o ya tiene) nuevos convenios y las nuevas prácticas de programación y terminología nueva. ¿Cómo alguien recien iniciándose alguna vez entendera todo esto? teniendo encuenta el core de Drupal?.

A mi punto de vista los que tenemos de alguna forma una mentalidad bastante "Ingenieríl y estructurada" (por decirlos de alguna forma), tendemos a querer estructurar todo lo que esté a nuestro alrededor; pero realmente en este caso, una idea como ésta es un beneficio o es lo mejor para el avance de Drupal? o es que lo que más queremos es estructurar este Framework y adecuar a nuestra mente y forma de ver las cosas...
Quiero finalizar mi post dejando una pregunta abierta.Que piensa Ud. acerca de esto? déjeme sus comentarios.

Enlaces relacionados:
POO y Patrones de Diseño en Drupal
“PHP (recursive acronym for “PHP: Hypertext Preprocessor”)
Why Programming Oriented Objects is bad for Drupal