Search

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

문자열을 쓰지 말아야 할 사례

 다른 값 타입을 대신하기에 적합하지 않다

입력받을 데이터가 진짜 문자열일 때만 사용하라.
‘예/아니오’ 질문의 답이라면 적절한 열거 타입이나 boolean으로 변환하라.
기본 타입이든 참조 타입이든 적절한 값 타입이 있다면 그것을 사용하고, 없으면 새로 작성하라.

 열거 타입을 대신하기에 적합하지 않다

상수를 열거할 때는 문자열보다 열거 타입이 월등히 낫다.

 혼합 타입을 대신하기에 적합하지 않다

혼합 타입 : 여러 요소가 혼합된 데이터를 의미한다.
String compoundKey = className + “#” + index.next();
Java
두 요소를 구분해주는 문자로 혼란스러운 결과를 초래한다.
각 요소를 개별로 접근하려면 파싱해야 하는데 느리고, 귀찮고, 오류 가능성도 커진다.
String이 제공하는 기능에만 의존해야 한다.
보통 private 정적 멤버 클래스로 선언하는 편이 좋다.
public class Compound { private CompoundKey compoundKey; private static class CompoundKey { private String className; private String delimiter; private int index; public CompoundKey(String className, String delimiter, int index) { this.className = className; this.delimiter = delimiter; this.index = index; } } }
Java

 권한을 표현하기에 적합하지 않다.

문자열 대신 위조할 수 없는 키를 권한(capacity)라고 한다.
ex) 스레드 지역변수

 핵심 정리

적합한 데이터 타입이 있거나 새로 작성할 수 있다면 문자열 대신 사용하라.
문자열은 잘못 사용하면 번거롭고, 덜 유연하고, 느리고, 오류 가능성도 크다.