[Java Refactoring] 분류 코드를 클래스로 치환

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

 

[Java Refactoring] 매직 넘버를 기호 상수로 치환

자바로 배우는 리팩토링 입문 Java Refactoring For Beginner 건강한 코드로 소프트웨어 체질을 개선하자! 유키 히로시 지금 길벗 출판사 2017.10.31 리팩토링을 위한 스터디 내용을 정리하자. 매직 넘버를

hoooon-s.tistory.com

 

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