Skip to content

Latest commit

 

History

History
25 lines (18 loc) · 1.8 KB

File metadata and controls

25 lines (18 loc) · 1.8 KB

아이템 39 명명 패턴보다 어노테이션을 사용하라

용어 정리: 어노테이션(주석): 컴파일 과정에서 코드를 어떻게 컴파일 할 것인지 실행 과정에서 코드를 어떻게 처리할 것인지 알려주는 메타 데이터

메타 데이터: 설명을 의미하는 데이터

옛날에는 명명 패턴을 사용했다 JUnit테스트 코드도 메서드 이름을 test로 시작해야 테스트 코드가 돌아갔다 test에 오타가 나면 테스트 코드가 실행되지 않는 불편함이 있었고 클래스 이름을 Test로 시작하게 지었다면 클래스 이름에는 돌아가지 않는다 또한 테스트 실패 케이스에 대해서도 예외 타입을 메서드에 덧붙히는 방법도있지만 보기도 어렵고 깨지기도 쉽다 어노테이션은 이 모든 문제를 해결해주는 멋진 개념으로 JUnit4부터 도입되었다

@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@API(
    status = Status.STABLE,
    since = "5.0"
)
@Testable
public @interface Test {
}

어노테이션 타입 선언 뿐만 아니라 다른 어노테이션이 달려있다 이를 메타어노테이션이라 한다 메타 어노테이션은 @Test가 런타임에도 유지되어야 한다는 표시이다 매타 어노테이션을 생략하면 테스트 도구는 @Test를 인식할 수 없다 한편 @Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD}) 매타 어노테이션은 @Test가 반드시 메서드 선언에서만 사용돼야 한다고 알려준다. 따라서 클래스 선언, 필드 선언 등 다른 프로그램 요소에는 달 수 없다

명명패턴으로 바꾸는 여러 방식이 나왔지만 어노테이션으로 할 수 있는 일을 명명 패턴으로 처리할 이유는 없다