jueves, 16 de agosto de 2012

PHP correcto (parte 1)

Bueno, después de ausentarme mucho tiempo, estoy de vuelta :)

Ahora les hablare de la manera correcta (como yo lo entiendo) de desarrollar en PHP. Muchos programadores, me incluyo, comienzan mal, pero no esta mal, es un proceso natural, lo que si estaría mal, es estancarse y conformarse con una forma de programación. Si bien no existe una forma canónica de programar en PHP, si hay métodos para hacerlo mejor. Esto pretende ser una guía muy simple para orientar y así conseguir mayor eficacia y eficiencia en nuestros desarrollos.

PHP desde que lo conocí, ha sufrido muchisimos cambios, últimamente a tenido transformaciones muy notables, que hay cambiado por completo la forma de ver este lenguaje, en ultimas versiones se han integrado conceptos avanzados como son: traits, espacios de nombres, reflexión, paradigma de programación funcional (lambda), entre otros. Con esto PHP se vuelve cada vez mas poderoso y esto solo indica que es un lenguaje que permanecerá por muchisimo tiempo mas y dudo mucho que otras tecnologías lo alcancen, asi que quienes desarrollan en este lenguaje y obtienen ganancias por el, pueden estar tranquilos que va a durar muchos años mas como el lenguaje predilecto para la web.

Comencemos. Después de hacer código espagueti, uno termina preguntándose, si hay maneras de no solo hacer su código mas escalable y mantenible, si no de ser un programador mas productivo y profesional. PHP es muy flexible y permite infinidad de formas de lograrlo, pero se han desarrollado técnicas mas apropiadamente principios, patrones de diseño y herramientas tales como DI, IoC, mvc, frameworks, TTD, BDD, etc. que están mas que probadas, sin ir mas lejos los principales frameworks hacen uso de estos técnicas de ingeniería de software.

En forma de lista iniciaremos:

1.- Instalar el entorno mas actual de PHP y MySql (a estas alturas ya dominamos todos este tema).

2.- Elegir un framework de desarrollo, que nos permitirá implementar el mas importante paradigma de programación utilizado en la web y el cual es el MVC (modelo vista controlador) así como una abstracción de datos, entre otros. Esta elección queda a total discreción del programador, yo recomendaría el "oficial" zend framework 2 y uno que es increíblemente rápido y sobre todo sencillo de aprender, ademas de que es hispano, KumbiaPHP, aunque esta en versión beta es muy estable.

 3.- Estudiar sobre los principios de desarrollo, estas trascienden a un paradigma o patrón de desarrollo, hablamos de quizá las tres mas determinantes:

            DRY (Don't Repeat Yourself) conocido también como "no te repitas".

           "no reinventes la rueda" se basa en la premisa de que si estas por codificar una rutina para una tarea muy común, seguramente alguien, o mas bien debería decir, alguna comunidad ya lo hizo y mejor.

            KISS (Keep It Simple, Stupid) "mantenlo simple, estúpido" un poco agresivo pero necesario ya que muchos son necios en este tema y pretenden hacerse los "programadores machos" y crear códigos ilegibles e imposibles de mantener o algoritmos muy complejos para tareas que no lo requieren.

           SOLID este es especifico al desarrollo orientado a objetos, que como sabemos es el mas usado. Es un acronimo mnemonico en ingles de:
                      S - SRP (Single responsibility principle) los objetos tienen una única responsabilidad
                      O - OCP (Open/Close Principle) las entidades de software deben ser cerradas para su modificación, pero abiertas a su extensión.
                      L - (Liskov Substitution Principle) los objetos deben ser reemplazables por instancias de sus subtipos sin alterar el funcionamiento del programa.
                              I - ISP (Interface segregation principle) muchas interfaces especificas son mejor que una sola de propósito general.
                      D - DIP (Dependency inversion principle) se debe depender de abstracciones no de concreciones.
       
         aqui una explicación mas amplia del principio SOLID, se puede investigar uno por uno, para comprender los mejor. http://www.genbetadev.com/paradigmas-de-programacion/solid-cinco-principios-basicos-de-diseno-de-clases

Lo anterior fija las bases con las que nos guiaremos al codificar de ahora en adelante, desde luego hay que profundizar en estos temas.


Seguiremos hablando mas sobre esta pequeña guía, en próximas entradas.

Saludos.

No hay comentarios.:

Publicar un comentario