Frage

Ich arbeite an einer Java-Bibliothek und mag einige Funktionen von ihm entfernen. Meine Gründe dafür ist, öffentliche API und Design Bereinigung. Einige Objekte haben Setter, aber unveränderlich sein sollte, hat einige Funktionen besser / Reiniger in verschiedenen Methoden implementiert, etc.

Ich habe diese Methoden ‚veraltet‘ markiert, und möchten, dass sie schließlich entfernen. Im Moment über ich denke, diese nach wenigen Sprinten zu entfernen (2 Wochen Entwicklungszyklus).

Gibt es irgendwelche 'best practices' über redundanten öffentlichen Code zu entfernen?

/ JaanusSiim

War es hilfreich?

Lösung

Sie ein Datum ein und es in dem @deprecated Tag veröffentlichen. Die Menge an Zeit, um die Entfernung gegeben ist abhängig von der Anzahl an Benutzern Code hat, wie gut verbunden sind Sie mit ihnen und das ist der Grund für die Änderung.

Wenn Sie Tausende von Benutzern haben, und Sie kaum zu ihnen, der Zeitrahmen wahrscheinlich in den nächsten Jahrzehnten seinen Bereich sprechen sollte: -)

Wenn Ihre Benutzer sind Ihre 10 Mitarbeiter und Sie sehen, wie sie täglich, kann der Zeitrahmen leicht in den Wochen liegen.

/**
 * @deprecated
 * This method will be removed after Halloween!
 * @see #newLocationForFunctionality
 */

Andere Tipps

Betrachten Sie es auf diese Weise, Kunde A lädt die neueste Version von Ihnen Bibliotheksdatei oder Rahmen zu arbeiten. Er schlägt auf dieser Maschine kompilieren und er plötzlich Tausende von Fehlern, weil die Teildatei oder Funktion nicht mehr existiert. Von diesem Zeitpunkt an haben Sie den Kunden einen Grund, warum nicht gegeben zu Ihrer neuen Version zu aktualisieren und mit der alten Version zu bleiben.

Raymond Chen beantwortet dies am besten mit seinem Blog über win32 API

Obwohl unsere Erfahrung in unserem Software-Hause war, sobald die API geschrieben wurde, wir die API zum Ende des Produktlebenszyklus zu tragen haben. Um Benutzer auf neue Versionen zu helfen, bieten wir die Rückwärtskompatibilität mit den alten Befehle in dem neuen Rahmen.

Es hängt davon ab, wie oft der Code wieder aufzubauen. Zum Beispiel, wenn es 4-Anwendungen unter Verwendung der Bibliothek sind, und sie sind täglich neu zu erstellen, ist ein Monat lang genug Zeit, um die veralteten Anrufe zu beheben.

Auch wenn Sie den veralteten Tag verwenden, bietet einige Kommentare auf dem Code den veralteten Aufruf ersetzt.

Verwenden Sie @deprecated Etikett. Lesen Sie die Deprecation von APIs Dokument für weitere Informationen.

Nachdem jeder mit dem Code sagt Ihnen, sie haben auf ihrer Seite gereinigt, starten Sie den veralteten Code zu entfernen und warten und sehen, ob sich jemand beschwert - dann sagen sie ihren eigenen Code zu beheben ...

Da dies eine Bibliothek ist, sollten Sie die Archivierung eine Version mit den veralteten Funktionen. Machen Sie diese Version in beiden Quellcode zur Verfügung und kompilierter Form, als Backup-Lösung für diejenigen, die ihren Code zu Ihrem neuen API nicht modernisiert haben. (Die binäre Form ist erforderlich, weil auch Sie Probleme Kompilieren der alten Version in ein paar Jahren haben können.) Machen Sie deutlich, dass diese Version nicht mehr unterstützt und verbessert werden. Tag diese Version mit einem symbolischen Symbol in Ihrem Versionskontrollsystem. Dann vorwärts bewegen.

Es hängt sicherlich, bei der Skalierung Ihrer API verwendet wird und was Sie Ihre Kunden im Voraus versprochen.

Wie von Vinko Vrsalovic beschrieben, sollten Sie ein Datum eingeben, wenn sie das verlassen der Funktion zu erwarten haben.

In der Produktion, wenn es „nur“ eine Frage der saubereren Code bekommt, neige ich dazu, Dinge an ihrem Platz blieb sogar hinter dem Verurteilen Datum solange er nichts brechen.

Auf der andere Seite in der Entwicklung ich es sofort tun, um die Dinge zu bekommen schnell aussortiert werden.

Sie können daran interessiert sein Beispiel dafür, wie deprecation arbeitet in einigen anderen Projekten. Zum Beispiel folgt hier, was die Politik in dem Django-Projekt für die Funktion deprecation :

  

Eine kleinere Mitteilung kann bestimmte Funktionen von früheren Versionen verbitten. Wenn eine Funktion in Version A. B ist veraltet, wird es weiterhin in der Version A. B + 1 arbeiten. In der Version A. B + 2, wird die Verwendung der Funktion eines PendingDeprecationWarning erhöhen, sondern wird weiterhin funktionieren. Version A. B + 3 wird die Funktion vollständig entfernen.

zu schlecht Sie nicht verwenden .Net: (

Der eingebaute Veraltet Attribut erzeugt Compiler-Warnungen.

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