Frage

Ich denke darüber nach Joda-Zeit.
Ich frage mich, ob ich darauf achten sollte, welche Art von Objekt meine Schnittstellen zurückkehren.
Rückgabe von Joda-Time-Objekten aus meiner Schnittstellensignatur auf der Serviceschicht bedeutet, dass jedes Modul, das es verwendete java.util.date API.
Übergeben Sie Joda -Objekte um Ihre App -Module oder schreiben Sie Wrapper in einem bestimmten Teil Ihrer App?

War es hilfreich?

Lösung

Geben Sie am Anfang nur den am besten geeigneten Typ zurück (Joda -Objekte in diesem Fall).

Wenn Sie erfahren, dass jemand ein Problem damit hat (was wahrscheinlich nicht zu oft passieren wird), fügen Sie entweder eine Konvertermethode zur Schnittstelle hinzu (Sie haben also beispielsweise, beispielsweise, getTime() und nun getJavaTime() oder getTimeInMillis()).

Oder fügen Sie eine allgemeine Helfermethode hinzu, die ein Objekt annimmt (Sie können eine unbekannte Instanz als behandeln Object Überall im Code, ohne die tatsächlichen Joda -Klassen importieren zu müssen) und ein einfaches Java -Objekt zurückgeben (java.util.Date).

Andere Tipps

Was ist die Alternative? Jodatime -Objekte in berüchtigte Kalender-/Datumsobjekte verwandeln?

Sie haben sich entschieden, diese Objekte loszuwerden, und das ist eine gute Entscheidung. Wenn Sie nun andere Ebenen die Java-Date-API verwenden lassen, werden sie in die Art von Fehlern und nichtempfindlichen Verhaltensweisen eingehen, die Sie mit Jodatime losgeworden sind.

Ich denke, Sie sollten Ihren Benutzern einen Gefallen tun und sie Jodatime verwenden lassen.

Natürlich ist es eine Designentscheidung, die ihren Code eine Abhängigkeit von Jodatime hinzufügt, aber ich finde sie nicht Fragebeibar, da Sie sich für Jodatime entschieden haben, weniger und bessere Code zu schreiben, und sie sollten auch.

Jetzt: Joda-Zeit

Wann immer möglich, verwenden Sie Joda-Zeit. Konvertieren Sie in java.util.date, wo erforderlich, um Daten mit anderen Klassen auszutauschen, die nicht Joda-Zeit-Verstand sind.

Von java.util.date zu org.joda.time.datetime, Übergeben Sie das Datum an einen DateTime -Konstruktor:

DateTime myDateTime = new DateTime( myDate );

Rufen Sie die an, um von datetime bis heute zu gehen toDate Methode:

Date myDate = myDateTime.toDate();

Zukunft: JSR 310

Java 8 bringt die von JSR 310 definierten Java-Time.

Wenn Ihr Projekt nur in Java 8 oder später verwendet wird, verwenden Sie diese eher als Joda-Zeit. Joda-Time ist immer noch nützlich für ältere Versionen von Java, und Joda-Time ist immer noch beibehalten. Aber die Java.Time.

Ihre Frage wird schließlich zu strittig, da andere Klassen und Frameworks aktualisiert werden, um die Verwendung von java.util.date/calendar durch java.time zu ersetzen.*.

Je nachdem, was Sie von Kundenbibliotheken mit Ihrer API erwarten, können Sie sich für die Verwendung entscheiden nur Millisekunden -Zeitstempel. Alles andere ist eine Darstellung, die es sich lohnt, weitergegeben zu werden oder nicht. Wenn es in Ihrer Bibliothek nur darum geht, Datum und Uhrzeit in menschlicher Weise zu repräsentieren, verwenden Sie Joda, und es kann in Java8 nur ähnlich gleich funktionieren. Wenn Ihre Bibliothek mehr in die Bekämpfung von Daten ist, austauschen Sie gerade Zeit in Millisekunden und überlassen Sie es dem Kunden, alles zu verwenden, was er möchte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top