책/이펙티브 자바

item 39 명명 패턴보다 애너테이션을 사용하라

함께자라기 2022. 4. 6. 09:43

ITEM 39 명명 패턴보다 애너테이션을 사용하라


전통적으로 도구나 프레임워크가 특별히 다뤄야 할 프로그램 요소에는 딱 구분되는 명명 패턴을 적용했다

명명 패턴은 효과적인 방법이지만 단점도 크다

  • 오타가 나면 안된다
    • jUnit 버전 3까지 테스트 메서드 이름을 test로 시작하게 했는데 test가 아닌 tset이런식으로 오타나 나게되면 해당 메서드를 무시하고 지나치게 된다
  • 올바른 프로그램 요소에서만 사용되리라 보증할 방법이 없다는 것이다
    • 클래스 이름을 TestSafetyMechanisms로 지어 jUnit에 던졌다고 가정했을때 jUnit은 클래스 이름은 신경을 쓰지 않는다
  • 프로그램 요소를 매개변수로 전달할 마땅한 방법이 없다
    • 특정 예외를 던져야 성공하는 테스트인경우 기대하는 예외 타입을 테스트에 매개변수로 전달해야 한다
      • 예외 이름을 테스트 메서드 이름에 붙이는 방법도 있지만 보기도 안좋고 깨지기도 쉽다
      • 컴파일러는 메서드 이름에 덧붙인 문자열이 예외를 의미하는지 알 수 없다

애너테이션은 이런 모든 문제를 해결해준다

  • jUnit 4버전 부터는 애너테이션 방식을 도입했다
  • 애너테이션으로 할 수 있는 일을 명명패턴으로 처리할 필요는 없다
  • 자바 개발자라면 예외없이 자바가 제공하는 애노테이션 타입들을 사용하자