유지보수를 위해 프로그램에 Enum, 클래스 추상화 등등을 적용시켜야 한다. 그래야 휴먼에러도 더 막기 쉽고, 예상치 못한 요청도 막을 수 있다.
코드 리팩토링을 하게 되면, 외부 서비스는 동일하지만 내부적으로 더 튼튼한 코드를 만들어준다.
예를들어 커뮤니티의 사이트의 유저의 경우, 등록상태를 나타내는 값은 "등록"과 "해지"밖에 없다. 이런 경우에는 Enum 으로 값을 관리하는 것이 좋다.
public enum UserStatus {
REGISTERED(0, "등록"),
UNREGISTERED(1, "등록");
private Integer id;
private String status;
}
위와 같이 고정된 값을 사용하는 필드는 Enum을 이용해 미리 사용되는 값들을 만들어 관리한다. 클라이언트가 검증할 수 없는 값을 요청하더라도 차단할 수 있다.
JpaRepository를 사용하는 경우, 엔티티 필드에는 Enumerated 어노테이션을 설정하고, 데이터 타입도 Enum 클래스 타입으로 바꾼다. EnumType.STRING은 Enum의 속성 또는 필드를 문자열로 유지한다는 것이다.
참고자료: woowabros.github.io/tools/2017/07/10/java-enum-uses.html
Enum과 관련된 글. 굉장히 친절히, 자세히 설명이 적혀있다.
데이터 API를 제작하는 경우, 모든 데이터는 공통적으로 CRUD 메소드를 제공한다. 따라서 이럴 땐 추상 클래스를 따로 만들어 그것을 상속받는 방식으로 API를 제작하면 코드의 중복성을 줄일 수 있고, 개발자의 실수, 코드의 결함 등을 막을 수 있다.
예를 들어 DB와 클라이언트 사이에서 작동하는 API를 제작할 때는 클라이언트와 통신하는 컨트롤러, 요청을 처리하는 API 로직 서비스 클래스를 만들게 되는데 모든 데이터 종류별로 이것들을 따로 만들면 코드량이 방대해진다. 따라서 추상 클래스를 만들어 상속받는 방식으로 코드를 관리하는 것이 좋다.
이런 코드의 추상화는 코드 설계 단계에 적용하는 것이 좋다.
'study > Spring boot' 카테고리의 다른 글
페이징 처리하기 (0) | 2021.04.08 |
---|---|
엉터리 정리 - 하이버네이트 (0) | 2021.04.08 |
엉터리 정리 - 메이븐과 그래들 (0) | 2021.04.05 |
엉터리 정리 - 테스트 코드 (0) | 2021.04.05 |
REST API 만들기 (0) | 2021.03.31 |