KEEPER31337 / Homepage-Back

키퍼 홈페이지 백엔드

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Enum 형식의 수정/삭제/추가가 일어나지 않는 테이블은 Enum Inner Class로 관리한다.

gusah009 opened this issue · comments

사전 수행 issue

없음.

이슈 내용

enum 형식으로 row가 많이 없고, 수정/삭제/추가가 잘 일어나지 않는 테이블은 AttendanceStatus 테이블 참고해서 그런 형식으로 수정하고, 테스트 코드를 반드시 작성해야 합니다. 테스트 코드는 SeminarAttendanceStatusRepositoryTest를 참고하도록 합시다.

테스트 코드를 작성해야 배포 시에 실제 DB의 데이터 변경 사항과 코드 내부 enum의 데이터 정합성을 일치시킬 수 있습니다.

추가로, 해당 Entity의 값을 하드코딩해서 쓰고 있는 곳이 있으면 이를 수정해야 합니다.

@Table(name = "study")
public class StudyEntity {

  // default 썸네일 ID를 하드코딩해서 쓰고 있다. 
  private static final Long RECTANGLE_DEFAULT_THUMBNAIL_ID = 1L;
  private static final Long SQUARE_DEFAULT_THUMBNAIL_ID = 2L;

  public String getThumbnailPath() {

    if (getThumbnail() == null) {
      return EnvironmentProperty.getThumbnailPath(SQUARE_DEFAULT_THUMBNAIL_ID);
    }
    return EnvironmentProperty.getThumbnailPath(getThumbnail().getId());
  }
}

위 코드처럼 default 썸네일 ID를 하드코딩해서 쓰면 나중에 default 썸네일 ID나 데이터가 바뀌어도 알아차리기 힘들고 버그를 낳을
가능성이 높습니다. default 썸네일 정보는 enum 형식으로 ThumbnailEntity에 있는 것이 좋을 것 같습니다.

public class MemberUtilService {

  // 하드코딩 해서 사용중!
  public static final Long VIRTUAL_MEMBER_ID = 1L;
}

위 코드도 VIRTUAL_MEMBER에 대한 정보는 반드시 MemberEntity의 enum에 들어가 있어야 합니다.

❗️ 예시로 보여드린 코드 외에도 위와 같이 사용하는 코드들이 많을 것 같습니다! 모두 찾아서 수정해야 합니다.

참고로 static final 키워드로 검색하면 하드 코딩해서 쓰고 있는 코드들을 쉽게 찾을 수 있습니다!

수행 내용

  • enum 형식으로 row가 많이 없고, 수정/삭제/추가가 잘 일어나지 않는 테이블은 AttendanceStatus 테이블 참고해서 그런 형식으로 수정한다.

    • enum을 추가한 Entity는 반드시 테스트 코드를 작성해 데이터 정합성을 확인한다.
  • 해당 Entity의 값을 하드코딩해서 쓰고 있는 곳이 있으면 이를 수정한다