Search

Item 62. 다른 타입이 적절하다면 문자열 사용을 피하라

생성일
2023/08/08 05:16
챕터
9장 - 일반적인 프로그래밍 원칙

요약

문자열을 다른 타입을 대체하여 사용하지 말자.

문자열이 잘못 사용되는 경우

문자열은 다른 값 타입을 대신하기 적합하지 않다.
받을 데이터가 수치형이라면 int나 float, BigInteger 등 적당한 숫자 타입으로 받는게 좋다.
예/아니오 와 같이 질문의 답에 대해서는 boolean으로 변환해야 한다.
문자열은 열거 타입을 대신하기 적합하지 않다.
문자열로 열거 타입을 대체하여 자주 사용되지만, 상수를 열거할 때는 열거 타입을 쓰자.
문자열은 혼합 타입을 대신하기에 적합하지 않다.
여러 요소가 혼합된 데이터를 하나의 문자열로 표현하는 것은 좋지 않다.
String compoundKey = className + "#" + i.next();
Java
복사
만약 # 문자가 둘 중 하나에서 사용된다면 위의 표현 방식은 오작동을 일으킬 것이다.
또한 이런 방식은 각 요소를 문자열에서 파싱하여 개별적으로 접근해야하고, 그로인해 느려지고 귀찮고 오류 가능성도 커진다.
이런 경우라면 따로 클래스를 만들어 사용하자.
문자열은 권한을 표현하기에 적합하지 않다.
문자열을 통해 특정 값을 식별하는 권한(capacity)으로 사용하는 것은 바람직하지 않다.
public class ThreadLocal { private ThreadLocal() {} public static void set(String key, Object, value); public static Object get(String key); }
Java
복사
이와 같이 문자열 키 값으로 지역변수를 식별하는 방법을 사용하면, 클라이언트 별로 서로 다른 문자열 키 값을 사용해야하고 의도치 않게 두 클라이언트가 같은 키를 사용하게 된다면 같은 변수를 공유하는 상황이 발생한다.
public class ThreadLocal() { privat ThreadLoacl() {} public static class Key { Key() {} } public static Key getKey() { return new Key(); } public static void set(Key key, Object value); public static Object get(Key key); }
Java
복사
이와 같이 위조할 수 없고, 서로 다른 클라이언트가 같은 키를 사용하는 일이 없도록 구현해야 한다.