본문 바로가기

개발/[스터디] 이펙티브 자바

[이펙티브자바]아이템27. 비검사 경고를 제거하라

최대한 많은 비검사 경고를 지우자.

- 모든 비검사 경고는 런타임에 ClassCastException을 일으킬 수 있는 잠재적 가능성이 있다. 따라서 최선을 다해 제거하자.

- 비검사 경고 예시) 아래 코드에서 HashSet의 타입을 명시해주라는 경고가 뜬다. 

// Set<Lark>로 형변환이 필요하다는 경고 발생
Set<Lark> exaltation = new HashSet();

// 다이아몬드 연산자를 사용한 수정 (자바 7부터 지원)
Set<Lark> exaltation = new HashSet<>();

 

경고를 제거할 수 없지만, 타입 안전하다고 확신한다면 @SupressWarnings("unchecked") 애너테이션을 달아 경고를 숨기자.

- 예외가 일어나지 않을 것이라 확신한다면 불필요한 경고는 지우는것이 좋다. 잠재적인 버그에 대한 경고를 찾는데 도움을 준다.

- 가능한 좁은 범위에 적용하자. (예. 변수 선언, 아주 짧은 메서드, 생성자)

- 클래스 전체에는 절대 적용하지 말 것 (심각한 경고를 놓치 수 있다)

- 그 경고를 무시해도 안전한 이유를 항상 주석으로 남기자. 동료가 잘못 수정하는 경우를 방지할 수 있다.