Hard code

práctica en el desarrollo de software

Hard-code, término del mundo de la informática que hace referencia a una práctica en el desarrollo de software que consiste en incrustar datos directamente en el código fuente del programa, en lugar de obtener esos datos de una fuente externa como un fichero de configuración o parámetros de la línea de comandos, o un archivo de recursos.

Esta práctica tiene limitaciones, ya que requiere la modificación del código fuente cada vez que cambian los datos, cuando lo conveniente sería que el usuario final pudiera cambiar estos detalles fuera del código fuente del programa.

Por ejemplo, una referencia hard-coded a un fichero tendría escrito el nombre y la ruta al fichero en un lugar específico del disco. Si la localización del fichero cambia, el programador ha de cambiar el código fuente para que apunte a la nueva localización. Una solución a este problema sería tener una variable interna llamada «nombreDeFichero», que podría ser asignada mediante una ventana de diálogo de navegación de ficheros, de esta manera no sería necesario cambiar el programa por un cambio en los datos.

Otro ejemplo de las limitaciones del hard-coding puede producirse durante el desarrollo de API's, con la adición o generación de datos de forma dinámica que no se encuentran persistidos en almacén alguno ni especificados en archivos de configuración. Delegar en el código fuente la generación de esta información, en un principio no mutable, consumida muy habitualmente por un cliente del API, provocará problemas de mantenimiento a medio y largo plazo, a pesar de sus aparentes ventajas a corto plazo, además de introducir un diseño blackbox del sistema.

El abuso de esta práctica es muy extendida entre programadores noveles, básicamente debido a su poco conocimiento de los estándares de programación, aunque también puede darse en programadores de experiencia contrastada; en este caso algunos autores consideran que se trata de un síntoma de agotamiento que puede llevar al programador a abandonar prácticas correctas en favor de otras más rápidas, aun sabiendo que son incorrectas.

Un caso del uso correcto de está práctica es en sistemas embebidos que jamás tendrán interacción con ningún usuario y que tienen que mantener unos parámetros de funcionamiento mínimos a lo largo de toda su vida, de manera que en caso de perder los parámetros configurados siempre pueda seguir funcionando. Esos parámetros mínimos deben ser hard-coded. Otro caso correcto del hard-coding es definir los pines físicos de un microcontrolador a los que tiene conectado los periféricos, por lo general estos valores son propios del sistema y jamás deberían poder ser modificados externamente al desarrollo.