Softcoding es un término de codificación de computadora que se refiere a la obtención de un valor o función de algún recurso externo, como archivos de texto , archivos INI , macros de preprocesador , constantes externas, archivos de configuración , argumentos de línea de comandos, bases de datos, entrada del usuario, respuestas del servidor HTTP. Es lo opuesto a la codificación rígida , que se refiere a la codificación de valores y funciones en el código fuente.
Práctica de programación
Evitar la codificación rígida de valores comúnmente alterados es una buena práctica de programación. Los usuarios del software deberían poder personalizarlo según sus necesidades, dentro de lo razonable, sin tener que editar el código fuente del programa. De manera similar, los programadores cuidadosos evitan los números mágicos en su código para mejorar su legibilidad y ayudar en el mantenimiento. Por lo general, estas prácticas no se denominan "codificación software".
El término se utiliza generalmente cuando la codificación por software se convierte en un antipatrón . La abstracción de demasiados valores y características puede introducir más problemas de complejidad y mantenimiento que los que se experimentarían al cambiar el código cuando fuera necesario. Softcoding, en este sentido, apareció en un artículo en The Daily WTF . [1]
Problemas potenciales
En el extremo, los programas codificados en software desarrollan sus propios lenguajes de scripting mal diseñados e implementados, y archivos de configuración que requieren habilidades de programación avanzadas para editar. Esto puede llevar a la producción de utilidades para ayudar a configurar el programa original, y estas utilidades a menudo terminan siendo 'codificadas por software' ellas mismas.
El límite entre la capacidad de configuración adecuada y la codificación flexible problemática cambia con el estilo y la naturaleza de un programa. Los programas de código cerrado deben ser muy configurables, ya que el usuario final no tiene acceso al código fuente para realizar cambios. El software interno y el software con distribución limitada pueden ser menos configurables, ya que distribuir copias modificadas es más sencillo. Las aplicaciones web personalizadas suelen ser mejores con una capacidad de configuración limitada, ya que alterar los scripts rara vez es más difícil que alterar un archivo de configuración.
Para evitar la "codificación por software", considere el valor para el usuario final de cualquier flexibilidad adicional que proporcione y compárelo con la mayor complejidad y los costos de mantenimiento continuo relacionados que implica la capacidad de configuración adicional.
Alcanzar la flexibilidad
Existen varios patrones de diseño legítimos para lograr la flexibilidad que intenta proporcionar la codificación por software. Una aplicación que requiera más flexibilidad de la apropiada para un archivo de configuración puede beneficiarse de la incorporación de un lenguaje de secuencias de comandos . En muchos casos, el diseño apropiado es un lenguaje de dominio específico integrado en un lenguaje de programación establecido. Otro enfoque es mover la mayor parte de la funcionalidad de una aplicación a una biblioteca, proporcionando una API para escribir aplicaciones relacionadas rápidamente.
Otros significados
En el diseño de funciones , la codificación por software tiene otros significados.
- Codificación : la función está codificada en el sistema y no permite la configuración.
- Paramétrico : la función se puede configurar mediante tablas o archivos de propiedades con valores paramétricos limitados
- Softcoding: la función utiliza "motores" que derivan resultados basados en cualquier número de valores paramétricos (es decir, reglas comerciales en BRE ); las reglas están codificadas pero existen como parámetros en el sistema, escritas en forma de script