La codificación rígida,[1][2] más conocida por el anglicismo hard code[nota 1][nota 2] 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 archivo 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 a un fichero codificada rígidamente 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 de la codificación rígida puede producirse durante el desarrollo de una API, 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 de la 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 extendido 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 indicarse explícitamente. Otro caso correcto de la codificación rígida 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.