728x90
반응형
SMALL
자바로 배우는 리팩토링 입문
- Java Refactoring For Beginner
- 건강한 코드로 소프트웨어 체질을 개선하자!
- 유키 히로시 지금
- 길벗 출판사
- 2017.10.31
리팩토링을 위한 스터디 내용을 정리하자.
분류 코드를 클래스로 치환
분류 코드(type code)는 객체 종류를 나타내는 값을 의미한다.
예를 들어 프로그램에서 다음 세 종류의 상품을 다룬다고 가정하자.
- 책
- DVD
- 소프트웨어
이 상품 종류를 나타내기 위해 다음과 같이 int 값을 할당 하자.
- 책 = 0
- DVD = 1
- 소프트웨어 = 2
이때 0, 1, 2라는 값이 분류 코드가 된다.
이렇게 분류 코드를 int 같은 기본 타입으로 지정하는 경우, 위험이 존재한다.
- 분류 코드 범위 밖의 값이 사용됨
- 다른 분류 코드와 착각함
즉, 타입이 판별되지 않는 혹은 타입 세이프가 아닌 문제가 발생한다.
또한, 매직 넘버로 의미를 알 수 없는 측면도 존재한다.
hoooon-s.tistory.com/21?category=960562
Before
public class Refactoring {
public static final int TYPECODE_BOOK = 0;
public static final int TYPECODE_DVD = 1;
public static final int TYPECODE_SOFRWARE = 2;
private final int typecode;
}
After
public class ItemType {
public static final ItemType BOOK = 0;
public static final ItemType DVD = 1;
public static final ItemType SOFRWARE = 2;
}
public class Refactoring {
private final ItemType typecode;
}
이 책에서는 이런식으로 별도 클래스를 만드는 것을 소개해주고 있다.
하지만, 실무에서는 ENUM으로 정의해서 많이 사용하는 경우가 많다고 생각한다.
@Getter
@AllArgsConstructor
public enum ItemType {
BOOK(0),
DVD(1),
SOFTWARE(2)
;
private int code;
}
public class Refactoring {
ItemType.BOOK;
ItemType.DVD;
ItemType.SOFTWARE;
}
728x90
반응형
LIST
'Study > Java Refactoring For Beginner' 카테고리의 다른 글
[Java Refactoring] 리팩토링 목록 (0) | 2021.02.08 |
---|---|
[Java Refactoring] 에러 코드를 예외로 치환 (0) | 2021.02.08 |
[Java Refactoring] 메서드 & 클래스 추출 (0) | 2021.02.08 |
[Java Refactoring] 제어 플래그 삭제 (0) | 2021.02.08 |
[Java Refactoring] 매직 넘버를 기호 상수로 치환 (0) | 2021.01.17 |