-
item 39 명명 패턴보다 애너테이션을 사용하라책/이펙티브 자바 2022. 4. 6. 09:43
ITEM 39 명명 패턴보다 애너테이션을 사용하라
전통적으로 도구나 프레임워크가 특별히 다뤄야 할 프로그램 요소에는 딱 구분되는 명명 패턴을 적용했다
명명 패턴은 효과적인 방법이지만 단점도 크다
- 오타가 나면 안된다
- jUnit 버전 3까지 테스트 메서드 이름을 test로 시작하게 했는데 test가 아닌 tset이런식으로 오타나 나게되면 해당 메서드를 무시하고 지나치게 된다
- 올바른 프로그램 요소에서만 사용되리라 보증할 방법이 없다는 것이다
- 클래스 이름을 TestSafetyMechanisms로 지어 jUnit에 던졌다고 가정했을때 jUnit은 클래스 이름은 신경을 쓰지 않는다
- 프로그램 요소를 매개변수로 전달할 마땅한 방법이 없다
- 특정 예외를 던져야 성공하는 테스트인경우 기대하는 예외 타입을 테스트에 매개변수로 전달해야 한다
- 예외 이름을 테스트 메서드 이름에 붙이는 방법도 있지만 보기도 안좋고 깨지기도 쉽다
- 컴파일러는 메서드 이름에 덧붙인 문자열이 예외를 의미하는지 알 수 없다
- 특정 예외를 던져야 성공하는 테스트인경우 기대하는 예외 타입을 테스트에 매개변수로 전달해야 한다
애너테이션은 이런 모든 문제를 해결해준다
- jUnit 4버전 부터는 애너테이션 방식을 도입했다
- 애너테이션으로 할 수 있는 일을 명명패턴으로 처리할 필요는 없다
- 자바 개발자라면 예외없이 자바가 제공하는 애노테이션 타입들을 사용하자
'책 > 이펙티브 자바' 카테고리의 다른 글
item 41 정의하려는 것이 타입이라면 마커 인터페이스를 사용하라 (0) 2022.04.06 item 40 @Override 애너테이션을 일관되게 사용하라 (0) 2022.04.06 item 38 확장 할 수 있는 열거타입이 있으면 인터페이스를 사용하라 (0) 2022.04.06 item 37 oridinal 인덱싱 대신 EnumMap을 사용하라 (0) 2022.04.06 item 36 비트 필드 대신 EnumSet을 사용하라 (0) 2022.03.30 - 오타가 나면 안된다