java-squid/effective-java

[아이템 62] 다른 타입이 적절하다면 문자열 사용을 피하라

Closed this issue · 5 comments

[아이템 62] 다른 타입이 적절하다면 문자열 사용을 피하라

이번 장 공부하다가 문자열은 열거타입을 대신하기에 적합하지 않다 라는 구문이있는데.. 해당 구문이 잘 이해가 되지않네요 참고할 수 있는 챕터를 봐도 잘 이해가 되지 않아서 혹시 해당부분 이해할 수 있도록 설명해주실분 있으신가요?

문자열은 열거타입은 대신하기에 적합하지 않다..

  • #34
  • 우선 열거타입을 왜 쓰는 지 부터 생각해봐야할 것 같아요. 열거 타입을 왜 사용하는 걸까요?
  • 제 생각으로는 작게는 클래스, 크게는 해당 프로젝트 내에서 그 변수의 유일성을 보장해주기 위해서가 아닐까 싶어요.
  • enum이라는 클래스 내부에서 같은 이름의 변수를 추가하였을 경우, 컴파일러가 에러가 발생하지만
  • 문자열의 경우, 해당 문자가 클래스 내부에서 유일한지 알아보기 위해서는 추가적인 코드가 필요할 거라 생각되어요. 즉 귀찮아지는 거죠.
  • 다시 말해, 해당 값의 유일성을 쉽게 보장하고, 개발자의 오류를 방지하기 위해서(컴파일러의 도움을 받아) enum이라는 게 등장하지 않았나 생각하고 이러한 측면에서 문자열이 이를 대체하기엔 적합하지 않다고 본 것 같아요.
  • 가볍게 생각해봤습니다.. 확실하진 않아요
  • enum이라는 클래스 내부에서 같은 이름의 변수를 추가하였을 경우, 컴파일러가 에러가 발생하지만
  • 문자열의 경우, 해당 문자가 클래스 내부에서 유일한지 알아보기 위해서는 추가적인 코드가 필요할 거라 생각되어요. 즉 귀찮아지는 거죠.
  • 다시 말해, 해당 값의 유일성을 쉽게 보장하고, 개발자의 오류를 방지하기 위해서(컴파일러의 도움을 받아) enum이라는 게 등장하지 않았나 생각하고 이러한 측면에서 문자열이 이를 대체하기엔 적합하지 않다고 본 것 같아요.
  • 가볍게 생각해봤습니다.. 확실하진 않아요

변수의 유일성과 컴파일러상에서의 에러 체크 그것이 중요한것 같네요.
chapeter 34 를 차근차근 읽고있는데, 번역본 219page 에 이말이 조금은 와닿네요.
필요한 원소를 컴파일타임에 다 알수 있는 상수 집합이라면 항상 열거 집합을 사용하자.