As part of a refactoring effort or just ongoing development, a particular method or maybe an entire class may become obsolete in some sense.  Java supports the @Deprecated annotation to indicate that there's probably a better way to handle the functionality in question.  I imagine this is particularly useful in public API's where the effects of removing parts of an API might not be known.  For a non-public API and a project that uses revision control systems (so deleting can be undone in some sense), when is it appropriate to deprecate rather than deleting the obsolete element(s)?
When to deprecate and when to delete in Java
java;programming practices;refactoring