Esiste quell'annotazione @Deprecated
che si adatta bene alle librerie Java.
Una modifica di versione minore non interromperà un codice esistente se rimane un metodo di libreria deprecato. La compilazione della libreria non segnalerà avvisi di utilizzo del codice deprecati perché la libreria stessa non chiama i suoi metodi deprecati.
Ma cosa succede se il metodo deprecato si trova in un codice di classe del server monolitico, in cui una migrazione del codice altamente riutilizzata è un processo lento eseguito da un numero di sviluppatori in sequenza?
Diciamo che abbiamo un metodo originale che viene utilizzato in più parti del codice del server per più client e un giorno abbiamo deciso di introdurre un nuovo metodo per sostituirlo. Rimangono tuttavia alcuni usi del metodo originale nel nostro codice server perché la migrazione del codice è un processo incrementale lungo.
Dovremmo contrassegnare il metodo originale immediatamente con l'annotazione @Deprecated
?
I professionisti sono che le future implementazioni eviteranno di usarlo perché il metodo è contrassegnato con l'annotazione e quindi con lo stile di linea barrato in IDE.
Gli svantaggi sono che anche le restanti implementazioni vengono contrassegnate con lo stile della linea barrata e il compilatore Java segnala gli avvertimenti sugli utilizzi rimanenti, fino a quando tutti gli sviluppatori assegnati aggiornano le rispettive parti del codice monolitico per sbarazzarsi dell'uso del metodo deprecato.
Quindi, quale sarebbe l'approccio alla deprecazione del metodo migliore per un'applicazione monolitica con processo di migrazione del codice lento?