Pregunta

Me interesa lo que las estrategias de la gente ha subido con para separar toda la lógica enrevesada que es necesario para mantener la compatibilidad hacia atrás a partir del código principal de una aplicación. En otras palabras, las estrategias que le permiten llegar más cerca de tener su mirada código como si no hubiera problemas de compatibilidad hacia atrás, excepto para los archivos de origen aisladas separadas distintamente para esa tarea.

Por ejemplo, si su aplicación lee un formato de archivo en particular, en lugar de una función de archivo que toca la bocina análisis gigante, que podría tener su primer código de iterar una lista de "rarezas" entradas / objetos, donde cada capricho comprueba el archivo para ver si es un archivo que se aplicaría a, y si es así invoca su propia lógica de análisis en lugar de la lógica caso normal.

Peculiaridades es una estrategia bien, pero hay que hacer un trabajo para poner ganchos en peculiaridades de los controles en todos los lugares apropiados en su aplicación, y lo que los cheques se verá como va a variar para los diferentes tipos Quirk, etc. Casi parece no debe haber bibliotecas dedicadas a la plancha de caldera para esta tarea. Otra cuestión es la forma en que lo imponen peculiaridades no se abuse como ganchos de propósito general en trozos arbitrarios de la aplicación.

¿Fue útil?

Solución

Mi estrategia habitual es tener algo separado que se traducirá la entrada de la compatibilidad hacia atrás en la nueva entrada de implementación y, a continuación, utilizar el nuevo código de aplicación con estos datos traducidos.

Otros consejos

Esto dependerá de los plazos hasta que el retiro de dicha revés características de compatibilidad. Que ya está bastante seguro de que en un par de meses se va a liberar otra versión de su software que ya no tiene que tener esos caprichos, sólo puede mantener el viejo código por si es lo suficientemente disciplinado para eliminar realidad toda la costra en el próximo ciclo de desarrollo. Estoy mantenimiento de dos componentes de servidor back-end separados en los que trabajo y si bien no se pueden actualizar al mismo tiempo, por lo general pueden estar dentro de un par de semanas de diferencia. Esto significa que la comunicación entre ellos tiene que ser compatible hacia atrás, pero sólo una única versión posterior, y en cada versión que se puede eliminar el código antiguo que dejé por razones de compatibilidad hacia atrás en la versión anterior.

Sin embargo, si la capa de compatibilidad está ahí para quedarse por un largo tiempo, o incluso indefinidamente (piensa en formatos de archivo binario de Word) Me gustaría tratar de refactorizar el código de tal manera que la nueva funcionalidad y la funcionalidad de edad están en igualdad de condiciones en eso. Creo que tanto el formato antiguo (o comportamiento) y el nuevo formato son parte de los requisitos del sistema y no hay razón para que el antiguo formato a ser un ciudadano de segunda clase en el mismo (aparte de ser antiguo que es, nunca mejor dicho).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top