W ramach działań refaktoryzacyjnych lub po prostu ciągłego rozwoju, określona metoda lub może cała klasa może stać się w pewnym sensie przestarzała. Java obsługuje @Deprecated
adnotację wskazującą, że prawdopodobnie istnieje lepszy sposób obsługi danych funkcji. Wyobrażam sobie, że jest to szczególnie przydatne w publicznych interfejsach API, w których skutki usunięcia części interfejsu API mogą nie być znane. W przypadku niepublicznego interfejsu API i projektu korzystającego z systemów kontroli wersji (więc usunięcie może być cofnięte w pewnym sensie), kiedy należy przestać działać, zamiast usuwać przestarzałe elementy?