IT/Programming / / 2023. 4. 26. 13:36

<Effective Java> RULE 50 다른 자료형이 적절하다면 문자열 사용은 피하라

반응형

 

문자열로 해서는 안되는 일

1. 문자열은 값 자료형을 대신하기에는 부족하다.

· 데이터 파일이나 네트워크, 키보드에서 들어오는 값은 문자열 형태.

· 데이터가 텍스트 형태일 때는 괜찮지만 숫자라면 int, float 같은 수 자료형으로 변환 해야한다.

2. 문자열은 enum 자료형을 대신하기에는 부족하다.

· enum은 문자열보다 열거 자료형 상수에 적합하다.(규칙 30)

3. 문자열은 혼합 자료형을 대신하기엔 부족하다.

· 여러 컴포넌트가 있는 개체를 문자열로 표현하는것은 좋지 않다.

//문자열을 혼합 자료형으로 써먹은, 부적절한 사례
String compoundKey = Rule50.class + "#" + i.next();

// 문자열 파싱하는데 느릴 뿐 더러 오류가 날 수 있다.
 

4. 문자열은 권한을 표현하기엔 부족하다.

· 스레드 지역변수 기능을 설계할 때, 쓰레드마드 다른 변수를 제공하는 기능

class ThreadLocal{
    private ThreadLocal() {} // 객체를 만들 수 없다.
    
    // 주어진 이름이 가리키는 스레드 지역 변수 값 설정
    public static void set(String key, Object value) {
    }
    
    // 주어진 이름이 가리키는 스레드 지역 변수의 값 반환
    public static Object get(String key) {
        return key;
    }
 

문자열이 스레드 지역변수의 전역적인 네임스페이스가 문제된다.

문자열의 키가 유일하다는것이 보장되야 한다.

-> 위조 불가능한 키로 변경

private ThreadLocal() {} // 객체를 만들 수 없다.

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) {
    return key;
}
 

결론

· 더 좋은 자료형이 있거나 만들 수 있을 때는 객체를 문자열로 표현하는것은 피하라.

· 제대로 쓰지 못할 경우 문자열은 다른 자료형에 비해 다루기 성가시고, 유연성도 떨어지며, 느리고, 오류 발생 가능성이 높다.

· 문자열이 적합하지 못한 자료형으로는 기본 자료형, enum, 혼합 자료형 등이 있다.

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유