Dejar de ser un cowboy del código y aplicar buenas prácticas de desarrollo a WordPress

WordPress es uno de los CMS más populares y uno de los más utilizados en Internet. Además tiene detrás una comunidad de usuarios enorme. Lo que posiciona a WordPress como una de las herramientas más utilizadas cuando vamos a desarrollar un sitio web, una tienda online, es la más recomendada a la hora de hacer un MVP para una startup, etc.

El problema es que entre los desarrolladores PHP hay un poco de odio hacia WordPress. Es cierto el código de PHP es un poco desastre, pero funciona. Y funciona bien. Y como a veces pasa, el problema no esta en el software sino en como las personas se relacionan con ese software.

8322854138_7177baab2a_z
Tram of light

Seguir leyendo “Dejar de ser un cowboy del código y aplicar buenas prácticas de desarrollo a WordPress”

Object Calisthenics en PHP – “Reglas de oro” para escribir mejor código orientado a objetos

Object Calisthenics – Reglas de oro para escribir mejor código orientado a objetos

Object Calisthenics es un artículo de Jeff Bay escribió hace bastante en el que nos cuenta una serie de reglas para escribir mejor código orientado a objetos.

El planteamiento de Jeff es sencillo: es fácil conocer todos los conceptos básicos que rodean a un buen diseño: cohesión, poco acoplamiento, legibilidad, tests,… sin embargo es tremendamente dificil poner estos conceptos en práctica, ya que una cosa es entender la encapsulación y otra muy distinta es implementarla.

La idea es tener una serie de reglas que nos ayuden a saber si nuestro código va por buen camino.

Este es el artículo original http://www.cs.helsinki.fi/u/luontola/tdd-2009/ext/ObjectCalisthenics.pdf intentaré hacer una pequeña traducción/adaptación utilizando PHP.

Seguir leyendo “Object Calisthenics en PHP – “Reglas de oro” para escribir mejor código orientado a objetos”

Buenas prácticas y consejos para desarrollar en PHP (Recopilatorio)

Llevo algo de tiempo programando en PHP, al principio mi código era horrible pero poco a poco he ido aprendiendo más y más sobre buenas prácticas, SOLID, naming, uso de herramientas para mejorar el código (PHP Mess detectorPHP code Sniffer…). Además la serie de post sobre refactoring PHP legacy code he podido poner en práctica muchos de estos conocimientos.

Este post es un recopilatorio de buenas prácticas y consejos que he ido aprendiendo en estos últimos meses.

Instalación de PHP

Antes de empezar a desarrollar tenemos que tener bien configurado PHP y el archivo de configuración php.ini es esencial.

  • date.timezone -> tener bien definido la zona horaria nos evitará muchos quebraderos de cabeza.
  • charset -> trabajar con UTF-8.
  • error_reporting -> tener diferentes entornos (producción, desarrollo,…) y que cada uno notifique errores distintos.
  • Extensiones -> Instalar extensiones como XDebug,, mycript, intl,Imagemagick.*

Utilizar Composer

Existen miles de librerías en PHP, github esta lleno de componentes que puedes sernos muy útiles para ayudándonos en nuestro día a día. Librerías par manejar CSV, para log, para manejar peticiones HTTP,… Para gestionar todas estas dependencias creo que lo más útil es utilizar composer.

Seguir leyendo “Buenas prácticas y consejos para desarrollar en PHP (Recopilatorio)”

Buenas prácticas para el testing funcional

Las últimas semanas hemos hablado de testing funcional, así que esta semana me gustaría traducir un artículo de InfoQ titulado “Functional GUI Testing Automation Patterns”( http://www.infoq.com/articles/gui-automation-patterns)

El proceso de desarrollo de una suite automática de pruebas funcionales para una aplicación específica no es muy diferente del proceso de creación del programa en sí. Existen muchas herramientas y cada días se crean nueva para conseguir interactuar con el sistema bajo prueba (SUT).

Hoy en día existen multitud de metodologías y enfoques para enfrentarnos al desarrollo software: desde la programación orientada a objetos, la programación funcional, diseño guiado por dominio (domain drive desing), desarrollo guiado por pruebas (TDD), desarrollo guiado por comportamiento (Beharvior Driven Development BDD), etc.

En este caso vamos a dirigirnos hacia las pruebas de interfaz (GUI) cuando el sistema bajo prueba (SUT) se presenta como una caja negra para el tester de aplicaciones.

Seguir leyendo “Buenas prácticas para el testing funcional”

PHPUnit y buenas prácticas

Hace ya unas semanas realicé unos post sobre como instalar PHPUnit para empezar con TDD. Hace unos días me llegó desde twitter un post sobre “Ser profesional” (http://plqd.blogspot.com.es/2013/07/ser-profesional.html) En el Pepe Doval cuenta experiencias tratando con personas más o menos profesional. Uno de los puntos clave que cuenta Doval es que el mundo de la programación es muy cambiante, llegan nuevos lenguajes y tecnologías cada día, por ello lo mejor la mejor manera de ser un profesional es aplicar buenas prácticas, desde comentar bien el código, hacer buenos commit, practicar TDD. Por eso llegado a este punto voy a escribir sobre buenas prácticas con PHPUnit.

He de decir que no soy un experto en la materia, esto son solo una serie de recomendaciones extraídas de Internet y que yo intento utilizar en la medida de lo posible, aunque para ser sincero no siempre consigo utilizarlas 😉

Vamos a basarnos en el ejemplo de la cuenta bancaria, es el mismo del post anterior sobre PHPUnit y el ejemplo clave de la documentación de PHPUnit (http://phpunit.de/manual/current/en/index.html)

Sé descriptivo acerca de lo que estás probando

Los test que escribimos deben ser autodescriptivos y con solo un vistazo al código debemos saber que se está probando. Esto puede ser fácil de decir pero bastante difícil de hacer, por ello en PHPUnit están las anotaciones como @Covers.

Seguir leyendo “PHPUnit y buenas prácticas”