Combate el hard coding con un archivo de configuración principal

El hard coding -o hard-codificación- es una mala práctica de programación que consiste en utilizar nombres explícitos para referirnos a cosas de nuestra aplicación, digamos, cuando muy probablemente esos nombres van a cambiar con el tiempo o con el entorno de ejecución del software.

hardcoding

La hardcodificación es un modo de hacer rígido (de ahí el nombre), muy poco flexible, más bien propio de programadores poco experimentados, que introduce barreras importantes en el mantenimiento de una aplicación.

Pongamos un ejemplo para ilustrar esto mejor. Resulta que estamos trabajando en una revolucionaria aplicación web 2.0 cuyo nombre de dominio en producción será cosas-de-casas.com, y no se nos ocurre otra cosa mejor que escribir explícitamente ese nombre de dominio allá en todas partes donde debe aparecer, o sea, en la etiqueta base de nuestros layouts HTML, en los scripts PHP que hacen redirecciones con la función header, en el JavaScript correspondiente, etc., etc. En todas partes, vaya.

¿Has hecho esto alguna vez? 😉

Pues bien, ahora llama el jefe a la puerta, entra en el departamento… y nos dice que el nombre de dominio ha cambiado por cuestiones estratégicas. Ya no hay cosas-de-casas.com. ¡El nuevo nombre de dominio es cositas-de-casitas.com! No vale hacer un “find” y cambiar los 25.000 cosas-de-casas.com.

Ah, http://cositas-de-casitas.com debe estar funcionando en quince minutos.

No te asustes. ¡Resolver este problema es en realidad muy sencillo! Como norma general, nuestras aplicaciones web deben tener un archivo de configuración principal, llamémosle config.php, donde se definen constantes como el nombre del URL, el nombre de la base de datos, el password, la ruta absoluta de la aplicación, etc.

Así, cuando suceden cosas como la anterior, sólo hay que cambiar la entrada correspondiente de este archivo para que todo siga funcionando. Todos los sistemas de software libre PHP tipo WordPress, Prestashop, Drupal o Joomla siguen este sistema.

A continuación adjunto un sencillo config.php de ejemplo que puedes utilizar a partir de ahora en tus apps, si eres de los que hard-codean:

define('BASE_URL', 'cositas-de-casitas.local');
define('DB_SERVER', 'localhost');
define('DB_NAME', 'casitas');
define('DB_USER', 'cc');
define('DB_PASSWORD', 'password');
define('APPLICATION_PATH', realpath(dirname(__FILE__)));

Y esto es todo por hoy. See you soon!