728x90
1. 할수있는 한 모든 비검사 경고를 제거하자
제네릭을 사용하기 시작했을 때 볼 수 있는 수많은 컴파일러 경고
- 비검사 형변환 경고
- 비검사 메서드 호출 경고
- 비검사 매개변수화 가변인수 타입 경고
- 비검사 변환 경고
새로 작성한 코드가 한번에 깨끗하게 컴파일되리라 기대하지는 말자
Java7 부터 제네릭 타입추론이 가능해졌다.
Set<Lark> exaltation = new HashSet<>();
할 수 있는 한 모든 비검사 경고를 제거하라 : 모두 제거하면 타입 안정성이 보장된다.
런타임에 ClassCastException이 발생할 일이 없고, 내가 의도한대로 잘 동작한다.
2. @SuppressWarning
a. 경고를 제거할 수는 없지만 타입 안전하다고 확신할 수 잇을 때 @SuppressWarning으로 경고를 숨기자
- 검증 없이 경고 숨길 때 : 경고없이 컴파일이 되어도 런타임에 여전히 ClassCastException을 던질 수 있다.
- 안전한데 안숨길 때 : 진짜 문제를 알리는 새로운 경고가 나와도 눈치채지 못할 수 있다.
b. 가능한 한 좁은 범위에 적용하자 : 변수 선언, 짧은 메서드, 생성자
범위가 필요이상으로 넓어지면, 지역변수를 하나 선언하고 그 변수에 애너테이션을 달아준다.
c. @SuppressWarning("unchecked") 애너테이션을 사용할 때 그 경고를 무시해도 안전한 이유를 항상 주석으로 남겨야한다.
다른사람이 코드를 이해하는데 도움이 되고, 다른사람이 그 코드를 잘못 수정할 경우를 막는다.
'Dev Book Review > Effective Java' 카테고리의 다른 글
[Effective Java] item29. 이왕이면 제네릭 타입으로 만들라 (0) | 2020.05.19 |
---|---|
[Effective Java] item28. 배열보다는 리스트를 사용하라 (0) | 2020.05.19 |
[Effective Java] item26. 로타입은 사용하지 말라 (0) | 2020.05.19 |
[Effective Java] Chapter 4: 클래스와 인터페이스 (0) | 2020.05.05 |
[Effective Java] item25. 톱레벨 클래스는 한 파일에 하나만 담으라 (0) | 2020.05.05 |