2009-05-05 12 views
15

Encontré el Wikipedia entry en la codificación suave anti-patrón escueto y confuso. Entonces, ¿qué es la codificación suave? ¿En qué configuración es una mala práctica (antipatrón)? Además, ¿cuándo podría considerarse beneficioso y, de ser así, cómo debería implementarse?¿Qué es codificación suave? (Anti-patrón)

+0

Esto no se aplica al artículo de Wikipedia sobre softcoding pero un poco truco útil a veces es cambiar el idioma de la "Inglés" a "simple Inglés" en la Wikipedia. – Travis

Respuesta

23

Respuesta corta: Ir a extremos para evitar la codificación rígida y terminar con una capa de abstracción intrincada monstruosa para mantener que es peor que si los valores codificados habían estado allí desde el principio. es decir, sobre ingeniería.

igual:

SpecialFileClass file = new SpecialFileClass(200); // hard coded 

SpecialFileClass file = new SpecialFileClass(DBConfig.Start().GetConnection().LookupValue("MaxBufferSizeOfSpecialFile").GetValue()); 
+10

Sin embargo, todavía tienes una cadena allí. Eso probablemente debería ser una constante o una propiedad en alguna parte. – Kobi

+2

Pero si es camelCase, lo obtiene del Registro en lugar de DB, ¡duh! –

3

Ola, un buen ejemplo de un proyecto real que tiene el concepto de softcoding integrado en el proyecto es Django. Su archivo settings.py abstrae ciertas configuraciones de datos para que pueda realizar los cambios allí en lugar de incrustarlos dentro de su código. También puede agregar valores a ese archivo si es necesario y usarlos cuando sea necesario.

http://docs.djangoproject.com/en/dev/topics/settings/

Ejemplo:

Esto podría ser un fragmento del archivo settings.py:

num_rows = 20 

Luego, dentro de uno de sus archivos se podía acceder a ese valor:

from django.conf import settings 
... 

for x in xrange(settings.num_rows): 
    ... 
+0

"num_rows" aquí podría ser un poco engañoso, y un ejemplo pobre, ya que el archivo de configuración es (debería ser) utilizado para configuraciones globales y/o específicas de la aplicación como "default_comment_count", "template_directory". 'num_rows' parece un poco genérico. –

+0

Considerando que este es un ejemplo y que la variable real realmente no debería importar, 'num_rows' realmente cabe dentro del archivo de configuración. Digamos que tienes un par de páginas con tablas de datos en ellas. Una forma simple de administrar el número de filas que se muestran dentro de esas tablas es con una variable en el archivo de configuración. – johannix

5

El mai n punto del Daily WTF article on soft coding es que debido a la optimización prematura y el miedo a un sistema que está muy bien definido y no hay conocimiento duplicado se altera y se vuelve más complejo sin necesidad.

Lo principal que debe tener en cuenta es si los cambios realmente mejoran su sistema y evitan etiquetar ligeramente algo como antipatrón y evitarlo por todos los medios. Configurar su sistema y evitar la codificación rígida es una cura simple para el conocimiento duplicado en su sistema (consulte el punto 11: "DRY No repetir" en The Pragmatic Programmer Quick Reference Guide) Esta es la necesidad detrás de la sugerencia de evitar la codificación rígida. Es decir. debería haber idealmente un solo lugar en su sistema (que sería el código o la configuración) que debería modificarse si tiene que cambiar algo tan simple como un mensaje de error.

0

El último en softcoding:

const float pi = 3.1415; // Don't want to hardcode this everywhere in case we ever need to ship to Indiana. 
+2

Eso me parece bien: evita saturar tu código con números mágicos, incluso si esos números son constantes e invariables. – PaulJWilliams

+5

+1 para Indiana dig. –

+4

Creo que lo último en softcoding es más como: const int ONE = 1; const int TWO = 2; etc. – tfinniga

Cuestiones relacionadas