글 작성자: 개발섭

Deprecated 잘쓰는 법

안쓰는 거긴하지만, 코드의 남아있는 경우 오용을 방지하기 위해서라도, Deprecated가 필요하다 그러면 이 경우 Deprecate를 사용하는 방법에 대해서 찾아봤다.
나는 주석에 @Deprecated를 자주 사용했는데, 그외에 다른방법이 있는지도 찾아보니, 오라클에서 제공하는 가이드라인이 존재하여 찾아보았다. 

 

결론을 먼저 말하자면,

 

@Deprecated라는 일반 어노테이션과, javadocs에 사용해야할 @deprecated를 동시에 섞어써야함.

 

기본적으로 @Deprecated는 컴파일때 주의 문구를 띄워줌. IDE에서 노란색 줄이 그어짐. 그런데, Javadocs에만 @deprecated를 작성해놓으면 그게 적용되지 않음.

 

즉, 문서에도 @deprecated가 적용되고 싶었더라면, docs에만 적용하는게 맞겠지만, 문서만 적용해두면 결국 그게 컴파일시에는 적용되지 않으므로 같이 적어주는게 가장 Base Practices 전략이라고 봐야한다.

 

또한 정적 코드분석기인 소나큐브에서도 이 룰을 지키도록 하는거라서 굳이 안지킬 이유도 없다고 생각한다~
Deprecated elements should have both the annotation and the Javadoc tag 라는 룰이 아예 지정되어있음.

참고

 

Java static code analysis: Deprecated elements should have both the annotation and the Javadoc tag

Deprecation should be marked with both the <code>@Deprecated</code> annotation and @deprecated Javadoc tag. The annotation enables tools such as IDEs to warn about referencing deprecated elements, and the tag can be used to explain when it was deprecated,

rules.sonarsource.com

 

How and When to Deprecate APIs

How and When To Deprecate APIs You may have heard the term, "self-deprecating humor," or humor that minimizes the speaker's importance. A deprecated class or method is like that. It is no longer important. It is so unimportant, in fact, that you should no

docs.oracle.com

 

@deprecated vs @Deprecated

I'm able to deprecate a function or class with the @Deprecated annotation. But there is a @deprecated javadoc tag in a javadoc comment itself marking the class/function as deprecated. Does the @

stackoverflow.com