2010-07-14 5 views
6

Was ist der beste Weg, um gegen eine erwartete Typänderung zu programmieren. Angenommen, ich muss Joda DateTime anstelle von Java Date in Zukunft verwenden. Da Java kein anti-Muster wie typedef fördert, ist dies der beste Weg, um ein einfaches Refactoring in der Zukunft sicherzustellen.
danke.Java-Muster für zukünftigen Typwechsel

+0

Die Parametrierung kann Ihnen helfen. Java Generics erleichtert dies. –

Antwort

5

Sicherlich das "Single-Responsibility-Prinzip" oder etwas in der Nähe und Kapselung sollte dazu beitragen, Abhängigkeit Kriechen zu begrenzen.

Die Wahl der Grundtypen ist jedoch eine architektonische Entscheidung. Wenn Sie String- oder Integertypen ändern würden, würden Sie eine Änderung in Ihrem Code erwarten. Das Datum ist nicht viel anders.

4

Die Programmierung von Schnittstellen und die richtige Layering ist die beste Abwehrmaßnahme, die ich mir vorstellen kann.

Wenn Sie trennen, was getan wird und wie es gemacht wird, lassen Sie sich die Möglichkeit, Implementierungen zu ändern, ohne die Clients zu beeinflussen, solange die Schnittstelle unverändert ist.

Wenn Sie die Schnittstelle ändern müssen oder wenn Sie ein neues Problem haben, sind alle Wetten deaktiviert. Keine Sprache hat eingebaute Hellsichtigkeit.

2

Umhüllen Sie den API/Typ in Frage hinter einem wrapper interface, und verwenden Sie es nur durch den Wrapper. Dann müssen Sie nur den Wrapper-Code ändern, um die Implementierung zu wechseln.

Dies wäre die allgemeine Lösung. Allerdings hat Tom recht, wenn er darauf hinweist, dass Date so fundamental ist, dass es eine architektonische Entscheidung sein sollte und nicht oft geändert werden sollte.

+0

Würde der Downvoter eine Erklärung geben? –

0

Mein nehmen versuchen Eclipse dazu ist, dass eine gute Java IDE drastisch den Schmerz einer großen Änderung von Datentypen reduzieren. Sie suchen nach Punkten, an denen Ihr Code die alte Klasse verwendet, ersetzen Sie sie durch die neue Klasse, und beheben Sie die folgenden Kompilierungsfehler, und wiederholen Sie den Vorgang. Wenn Sie mit den Änderungen fertig sind, führen Sie Ihre Einheits-/Regressionstests durch, beheben Sie die Fehler und (berühren Sie Holz!) Sie sind fertig.

OK ... es kann nicht so einfach sein. Insbesondere:

  • Reflektierende Abhängigkeiten können schwer zu finden sein.
  • Abhängigkeiten in der externen Verdrahtung/Konfigurationsdatei können schwierig zu finden sein.
  • Eine groß angelegte Anwendung, die aus Komponenten besteht, die von vielen Leuten geschrieben/verwaltet werden, kann problematisch sein. (Sie können nicht wirklich hacken nur auf jeden elses Code.)
1

Was ist der beste Weg gegen eine erwartete Typänderung zu programmieren.

Halten Sie Ihr Design so einfach und sauber wie möglich, und halten Sie eine gute Suite von Komponententests.

Dies hilft Ihnen mit alle zukünftige Änderungen, einschließlich unerwarteter (die viel häufiger sind).

+0

stimme zu, aber ich war nicht das generische, sondern spezifisch für "Typ" Änderungen. – bsr

+1

@bsreekanth: die generische Antwort gilt immer noch. Viel mehr als die anderen Antworten, IMO. Für das Beispiel, das Sie geben, würde jede Art von Wrapping oder Layering, die versuchen, die Änderung zu antizipieren, mehr Arbeit erfordern (und mehr Bugs einführen), als einfach die Änderung durchzuführen. –

Verwandte Themen