2009-09-29 10 views
13

Recientemente me puse en contacto con Empire-db. El proyecto doc. indicaron que están usando "string-free coding", con la intención de utilizar cadenas menos constantes para evitar errores tipográficos y usar la fuerza del compilador.¿Es un término común la "codificación sin cadenas"?

Siempre he sido un gran admirador de este principio, porque creo que como Java es un lenguaje formal, podría ser expresivo para la configuración como propiedades o xml y da un valor extra comprobando a través del compilador. Tal vez en el tiempo de ejecución hay menos posibilidades de cambios sin recompilar, pero esto depende de cada caso.

¿Ya tiene más referencias o lecturas sobre este término/principio/patrón de diseño?

+1

Gracias por señalar Empire DB. Es una herramienta que merece mayor investigación. Me sorprendió especialmente el análisis de Hibernate: http://incubator.apache.org/empire-db/empiredb/hibernate.htm – APC

+0

Ese es un artículo realmente interesante. Gracias @APC. –

+0

Si bien es un buen principio, como siempre, primero use el sentido común. Seguir sin pensar una buena práctica de diseño con buenas intenciones también puede llevar a un código incorrecto, echa un vistazo a http://thedailywtf.com/Articles/It-Gets-Worse-Each-Year.aspx y http://thedailywtf.com/Articles/ Soft_Coding.aspx –

Respuesta

4

Aunque nunca había escuchado ese término en particular, sé lo que quiere decir, tiene sentido.

4

Sé poco sobre Java, pero este idioma es famoso en el moderno C++. Por ejemplo, Xpressive es una biblioteca de expresiones regulares que permite al programador escribir la expresión regular en C++, y realiza la verificación en tiempo de compilación. Spirit es otro ejemplo, donde se puede escribir EBNF en C++, y el compilador puede comprobar la sintaxis para ti también :)

Creo que el término que busca es dominio Embedded idiomas específicos.

+0

Qt tiene algo relacionado también, pero eso se debe a la forma en que las traducciones funcionan allí. Básicamente encapsula cada cadena visible para el usuario con "tr (...) ", y la aplicación lo busca dinámicamente en tiempo de ejecución, utilizando únicamente la cadena dada cuando no se encontró una traducción adecuada. –

1

Nunca escuché la expresión en particular, pero Effective Java recomienda "evitar cadenas donde otros tipos son más apropiados" (artículo 50).

6

Esto es lo mismo que número mágico contra constantes. El uso de constantes aumenta la facilidad de mantenimiento y la legibilidad. Las constantes también encapsulan el cambio: un cambio en el valor constante se propaga automáticamente y, en cuanto a la codificación libre de cadenas, una constante mal escrita es un error en tiempo de compilación.

0

El famoso Pragmatic Programmer menciona este principio especialmente en relación con el manejo de metadatos. Uno de los consejos acerca de esto es:

Ponga Abstracciones en el código, detalles en Metadatos Programa

para el caso general, y poner los detalles fuera de la base de código compilado.

Vale la pena leer el libro de todos modos.

0

En cuanto a empire-db, es como 'tipo de seguridad' para las consultas SQL.

Cuestiones relacionadas