Un rotulador subraya la palabra solution

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.

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... El nombre de dominio ha cambiado por cuestiones estratégicas. Ya no hay cosas-de-casas.com porque el nuevo nombre de dominio es cositas-de-casitas.com.

No vale hacer 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!

Previous Post Next Post