2011-01-06 10 views
5

Recientemente encontré una sugerencia para que los patrones de expresiones regulares utilizados en nuestra base de código de aplicación se agrupen en una tabla de búsqueda, y se recuperen desde allí en lugar de hacerlo explícitamente codificados dentro de la lógica del programa.Uso de una tabla de búsqueda para patrones regex

¿Alguien puede compartir alguna opinión sobre la sabiduría de esto?

Mis pensamientos iniciales fueron que hace que los patrones sean más fáciles de cambiar, lo que conlleva ventajas y desventajas. Pero, fundamentalmente, veo una cadena de expresiones regulares en sí misma como una entidad de lógica que se ejecuta (efectivamente), por lo que almacenarlas en una tabla de búsqueda me hace sentir un poco incómodo.

Pensamientos a alguien?

Gracias

Respuesta

2

Creo que esta es una excelente idea, si logras mejorar un patrón de expresiones regex (o incluso solucionar un problema), vas a cambiarlo en un solo lugar y no en todas partes (probablemente el motivo mismo para hacer esto).

Esto reducirá el número de posibles errores en el programa (o los aumentará si lo cambia incorrectamente. Sin embargo, esto 'debería' manifestarse casi inmediatamente en las pruebas y solo tiene que arreglarlo en uno lugar, a diferencia de en todas partes ... una vez más, más propenso a errores).

Con respecto a verlo como una entidad de lógica, ¿sería útil si lo vieras como un conjunto de instrucciones que se guardan en una biblioteca de referencia, en lugar de la lógica en sí misma? La lógica en sí es realizada por el procesador de expresiones regulares en lugar de la plantilla que ha escrito en el código, por lo que lo veo como un buen candidato para ser almacenado en una tabla de búsqueda.

1

Si se va a dar lugar a conexiones SQL de otro modo innecesarios, diría yo, no. No lo hagas Huye a las colinas.

Pero, de lo contrario, si se repiten a menudo, piense cómo se puede refactorizar su código. ¿Debería utilizarlos en funciones o clases que se incluyen en varias páginas? Si la respuesta es no, entonces adelante, no veo ningún problema con eso.

Cuestiones relacionadas