Domanda

Una volta che un metodo è contrassegnato come obsoleto, esistono strumenti che sostituiscono questi metodi con soluzioni alternative non deprecate?

È stato utile?

Soluzione

Gli strumenti automatizzati potevano solo ragionevolmente gestire i casi in cui esiste un nuovo metodo o classe preferito da utilizzare per eseguire esattamente la stessa attività. Qualsiasi caso in cui un metodo è deprecato a causa di un design difettoso (pensa a qualsiasi cosa abbia a che fare con la data in Java) o perché un "migliore" il modo in cui è ora supportato (pensa AWT a Swing o SWT) richiede di essere pensato per essere automatizzato.

In breve, no non ci sono tali strumenti. Dubito che ci sarà mai qualcuno anche in futuro.

Altri suggerimenti

Se desideri farlo automaticamente - no .

Lo strumento si chiama programmatore .


Il motivo è che gli strumenti dovrebbero comprendere a fondo sia la deprecazione, la "non deprecazione", il programma e il linguaggio di programmazione di destinazione.

Ad esempio, java.util.Date.setMonth è deprecato a favore di Calendar.set (Calendar.MONTH, int month) .

Questa è una modifica non banale da applicare, poiché richiede la sostituzione di istanze di oggetti, chiamate di metodo, tenendo conto della sincronizzazione. In realtà da incubo da fare automaticamente.

Di solito, dovresti usare qualcosa come regexps, ANTLR o JavaCC per implementare il tuo strumento.

Inoltre, alcuni IDE offrono strumenti di livello relativamente più elevato per facilitare questo. In IntelliJ IDEA si tratta di "Ricerca strutturale e Sostituzione" e " Migrare " refactoring.

Non riesco a vedere come funzionerebbe al momento. In genere almeno un po ' è necessario modificare il codice client. Idealmente il metodo deprecato includerà un commento che dice: "Usa invece il metodo X, passando a null come parametro finale" o qualcosa di simile, ma solo nei casi più semplici questo può essere completamente automatizzato. Spesso ci sarà qualcosa come " Se hai bisogno di gestire voci null, usa X. Altrimenti, usa Y. "

(Inoltre, anche nei casi più semplici, non esiste alcun modo attuale di rappresentare la trasformazione in un formato leggibile dalla macchina - in pratica il protocollo appropriato non è stato definito per quanto ne so.)

È una buona idea, ma ho il sospetto che implementarla in modo utile introdurrebbe più complessità di quanto rimuoverà. Inoltre, sarei molto diffidente nei confronti di uno strumento che lo fa in modo completamente automatico per me, probabilmente vorrei comunque visualizzare in anteprima ogni modifica. A quel punto, di solito non risparmierebbe molto tempo a farlo manualmente all'inizio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top