Come parte di uno sforzo di refactoring o semplicemente di uno sviluppo in corso, un particolare metodo o forse un'intera classe può diventare obsoleto in un certo senso. Java supporta l'annotazione @Deprecated
per indicare che probabilmente esiste un modo migliore per gestire la funzionalità in questione. Immagino che questo sia particolarmente utile nelle API pubbliche in cui gli effetti della rimozione di parti di un'API potrebbero non essere noti. Per un'API non pubblica e un progetto che utilizza i sistemi di controllo di revisione (quindi l'eliminazione può essere annullata in un certo senso), quando è opportuno deprecare piuttosto che eliminare gli elementi obsoleti?