반응형
문자열로 해서는 안되는 일
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, 혼합 자료형 등이 있다.
반응형
'IT > Programming' 카테고리의 다른 글
<Effective Java> RULE 48 정확한 답이 필요하다면 float와 double은 피하라 (0) | 2023.04.26 |
---|---|
<Effective Java> RULE 49 객체화된 기본 자료형 대신 기본 자료형을 이용하라 (0) | 2023.04.26 |
<Effective Java> RULE 51 문자열 연결 시 성능에 주의하라 (0) | 2023.04.26 |
<Effective Java> RULE 52 객체를 참조할 때는 그 인터페이스를 사용하라 (0) | 2023.04.26 |
<Effective Java> RULE 53 리플렉션 대신 인터페이스를 이용하라 (0) | 2023.04.26 |