2010-07-14 12 views
6

¿Cuál es la mejor manera de programar contra un cambio de tipo anticipado. Supongamos que tendré que usar Joda DateTime en lugar de Java Date en el futuro. Dado que Java no fomenta el anti patrón como typedef, ¿cuál es la mejor manera de garantizar una fácil refactorización en el futuro?
gracias.Patrón de Java para el cambio de tipo futuro

+0

La parametrización puede ayudarlo. Java Generics lo facilita. –

Respuesta

5

Ciertamente, el "Principio de Responsabilidad Individual" o algo parecido y la encapsulación deberían ayudar a limitar la propagación de la dependencia.

Sin embargo, la elección de los tipos básicos es una decisión arquitectónica. Si cambiara los tipos de cadena o enteros, esperaría cambios en su código. La fecha no es muy diferente.

4

La programación de interfaces y capas adecuadas es la mejor medida defensiva que se me ocurre.

Cuando se separa lo que se hace de cómo se hace, se deja la posibilidad de cambiar las implementaciones sin afectar a los clientes, siempre y cuando la interfaz no se modifique.

Si tiene que cambiar la interfaz, o si termina haciendo un nuevo problema por completo, todas las apuestas están desactivadas. Ningún lenguaje tiene clarividencia incorporada.

2

Envuelva la API/tipo en cuestión detrás de un wrapper interface, y úsela solo a través del contenedor. Luego, debe cambiar solo el código del contenedor para cambiar la implementación.

Esta sería la solución general. Sin embargo, Tom tiene razón al señalar que Date es un tipo tan fundamental que elegirlo debería ser una decisión arquitectónica, que no debe modificarse con frecuencia.

+0

¿Le importaría al infractor dar una explicación? –

0

Mi opinión de este eclipse es que un buen IDE Java puede reducir drásticamente el dolor de un cambio a gran escala de tipos de datos. Busca los puntos en los que su código usa la clase anterior, los reemplaza con la nueva clase, corrige los errores de compilación subsiguientes y los repite. Cuando termine con los cambios, ejecute las pruebas de unidad/regresión, corrija los errores y (¡toque madera!) Ha terminado.

OK ... puede que no sea así de simple. En particular:

  • Las dependencias reflectoras pueden ser difíciles de encontrar.
  • Dependencias en el archivo de configuración/cableado externo pueden ser difíciles de encontrar.
  • Una aplicación a gran escala compuesta por componentes escritos/mantenidos por muchas personas puede ser problemática. (Realmente no se puede hackear el código de todo el mundo vigilara.)
1

¿Cuál es la mejor manera de programar contra un tipo de cambio esperado.

Manteniendo su diseño lo más simple y limpio posible, y manteniendo un buen conjunto de pruebas unitarias.

Esto le ayuda con todos cambios futuros, incluidos los imprevistos (que son mucho más comunes).

+0

estoy de acuerdo, pero no era tan genérico, pero específico para los cambios de "tipo". – bsr

+1

@bsreekanth: la respuesta genérica aún se aplica. Mucho más que las otras respuestas, IMO. Para el ejemplo que das, cualquier tipo de envoltura o estratificación que intente anticipar el cambio terminaría requiriendo más trabajo (e introducir más errores) que simplemente hacer el cambio. –

Cuestiones relacionadas