반응형
서론: 위험한 숲 속의 금지된 과일
상상해 보세요. 마법의 숲에 금지된 과일이 있는데, 이 과일을 먹으면 순간적으로 힘이 솟구치지만, 이내 큰 대가를 치르게 된다는 전설이 있습니다. 프로그래밍의 세계에서도 비슷한 금지된 과일이 있어요. 바로 '로 타입(raw types)'입니다. 이번 모험에서는 왜 로 타입을 사용하지 않아야 하는지, 그리고 그 대안은 무엇인지 함께 탐험해 보겠습니다.
본론: 로 타입의 유혹과 그 위험성
1. 로 타입이란 무엇인가?
자바에서 제네릭스(Generics)가 도입되기 전, 모든 컬렉션은 로 타입이었습니다. 예를 들어, List는 어떤 타입의 객체든지 저장할 수 있었죠. 제네릭스의 도입으로 List<String> 또는 List<Integer>와 같이 저장될 객체의 타입을 지정할 수 있게 되었습니다. 하지만 여전히 로 타입을 사용할 수는 있습니다. 문제는 여기서 시작됩니다.
2. 로 타입의 위험성
- 타입 안정성 부족: 로 타입을 사용하면 컴파일 타임에 타입 체크를 할 수 없어, 런타임에 ClassCastException과 같은 예외가 발생할 위험이 커집니다.
- 코드 읽기 어려움: 제네릭스를 사용하면 코드를 읽고 이해하기가 더 쉬워집니다. 로 타입을 사용하면 어떤 타입의 객체가 저장되는지 바로 알 수 없어 코드의 가독성이 떨어집니다.
- API 사용의 제한: 제네릭 타입으로 작성된 메서드는 로 타입으로는 제대로 사용할 수 없습니다. 이는 API 사용에 제한을 초래할 수 있습니다.
3. 안전한 대안, 제네릭스 사용하기
- 타입 안정성 보장: 제네릭을 사용하면 컴파일 타임에 타입 체크를 할 수 있어, 런타임에 발생할 수 있는 오류를 대폭 줄일 수 있습니다.
- 코드 가독성 향상: 제네릭스를 사용하면 저장되는 객체의 타입을 명확히 할 수 있어, 코드를 더 쉽게 이해할 수 있습니다.
- 유연성: 제네릭 메서드와 클래스를 사용하면, 다양한 타입에 대해 유연하게 코드를 작성할 수 있습니다.
결론: 금지된 과일을 피하고, 안전한 길을 선택하자
로 타입을 사용하는 것은 마치 숲속의 금지된 과일을 먹는 것과 같습니다. 잠시 편리할 수 있지만, 결국엔 큰 대가를 치를 수 있어요. 반면, 제네릭스를 사용하는 것은 안전하고 명확한 길을 선택하는 것입니다. 코드의 안정성을 보장하고, 가독성을 높이며, 유연한 프로그래밍이 가능해집니다. 프로그래밍의 숲에서 금지된 과일인 로 타입을 멀리하고, 제네릭스라는 안전한 길을 선택해보세요. 여러분의 코드 여행이 더욱 즐겁고 안전해질 거예요.
반응형
'Java > [책] 이펙티브 자바' 카테고리의 다른 글
[이펙티브자바] 규칙28. 배열보다는 리스트를 사용하라 (0) | 2024.03.12 |
---|---|
[이펙티브자바] 규칙27. 비검사 경고를 제거하라 (1) | 2024.03.12 |
[이펙티브자바] 규칙21. 자바에서 전략 패턴 작성법 (0) | 2022.06.25 |
[이펙티브자바] 규칙20. 태그 클래스는 계층형 클래스로 변경하자 (0) | 2022.06.20 |
[이펙티브자바] 규칙19. 상수 인터페이스(Constant Interface)는 안티패턴이다 (0) | 2022.06.20 |