Pregunta

Estoy considerando usar Joda-tiempo.
Me pregunto si debería prestar atención a qué tipo de objeto están regresando mis interfaces.
Devolver los objetos del tiempo Joda desde la firma de mi interfaz en la capa de servicio significa que cada módulo que lo use dependerá del tiempo Joda en lugar del común java.util.date API.
¿Está pasando objetos Joda alrededor de los módulos de su aplicación o escribe envoltorios en parte específica de su aplicación?

¿Fue útil?

Solución

Al principio, solo devuelva el tipo más adecuado (objetos Joda en este caso).

Si aprende que alguien tiene un problema con eso (que probablemente no suceda con demasiada frecuencia), agregue un método de convertidor a la interfaz (por lo que tiene, por ejemplo, getTime() y ahora getJavaTime() o getTimeInMillis()).

O agregue un método auxiliar de propósito general que toma un objeto (puede tratar una instancia desconocida como Object en cualquier lugar del código sin tener que importar las clases joda reales) y devuelve un objeto Java simple (java.util.Date).

Otros consejos

¿Cuál es la alternativa? ¿Transformar objetos de jodatima en infames objetos de calendario/fecha?

Eligió deshacerse de estos objetos y esa es una buena decisión. Ahora, si deja que otras capas usen la API de fecha Java, entrarán en el tipo de errores y comportamientos no sensoriales de los que se deshizo usando Jodatime.

Creo que deberías hacer un favor a tus usuarios y dejar que usen Jodatime.

Por supuesto, es una decisión de diseño que agregará en su código una dependencia a Jodatime, pero no me parece cuestionable, ya que eligió Jodatime para escribir un código cada vez mejor, y también deberían hacerlo.

Ahora: joda-tiempo

Siempre que sea posible, use Joda-tiempo. Convierta a java.util.date donde sea necesario para intercambiar datos con otras clases que no son expertos en el tiempo de Joda.

Pasar de java.util.date a org.joda.time.datetime, pase la fecha a un constructor de fecha y hora:

DateTime myDateTime = new DateTime( myDate );

Para ir de la fecha y hora a la fecha, llame al toDate método:

Date myDate = myDateTime.toDate();

Futuro: JSR 310

Java 8 trae las clases Java.Time.* Definidas por JSR 310. Estas clases fueron inspiradas en el tiempo de Joda pero son completamente rearquitectadas.

Si su proyecto se usa solo en Java 8 o posterior, use estos en lugar de Joda Time. El tiempo de Joda sigue siendo útil en versiones anteriores de Java, y el tiempo de Joda todavía se mantiene. Pero las clases Java.Time.* Están destinadas a suplantar tanto a Joda Time como a las clases Java.util.Date/Calendar.

Su pregunta eventualmente se volverá discutible a medida que otras clases y marcos se actualicen para reemplazar su uso de java.util.date/calendar con java.time.*.

Dependiendo de lo que espera que las bibliotecas de clientes hagan con su API, puede optar por usar solamente MilliseCond Time Stamps. Todo lo demás es una representación que puede o no vale la pena pasar. Si su biblioteca se trata de ayudar en la representación de la fecha y la hora de una manera radiable humana, use Joda y puede funcionar de la misma manera en Java8. Si su biblioteca está más interesada en la copetación con fechas, intercambie tiempo en milisegundos y deje que el cliente use lo que quiera.

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