Search
moon
sun

2. [클린 코드 with Java] 2단계 - 2단계 - 수강신청(도메인 모델)

링크
점수
⭐️⭐️⭐️⭐️
완료일
2023/06/18
상태
완료
유형
인강

학습 관리 시스템(LMS)

넥스트스텝은 재직자를 대상으로 소프트웨어 교육을 진행하는 교육 기관이다.
2018년 교육 사업을 시작했다.
교육 사업을 시작하며 자체적으로 학습 관리 시스템을 개발해 수강생을 모집하고, 컨텐츠를 관리하고 있다.

수강 신청 기능 요구사항

•
과정(Course)은 기수 단위로 여러 개의 강의(Session)를 가질 수 있다.
•
강의는 시작일과 종료일을 가진다.
•
강의는 강의 커버 이미지 정보를 가진다.
•
강의는 무료 강의와 유료 강의로 나뉜다.
•
강의 상태는 준비중, 모집중, 종료 3가지 상태를 가진다.
•
강의 수강신청은 강의 상태가 모집중일 때만 가능하다.
•
강의는 강의 최대 수강 인원을 초과할 수 없다.

프로그래밍 요구사항

•
DB 테이블 설계 없이 도메인 모델부터 구현한다.
•
도메인 모델은 TDD로 구현한다.
◦
단, Service 클래스는 단위 테스트가 없어도 된다.
•
다음 동영상을 참고해 DB 테이블보다 도메인 모델을 먼저 설계하고 구현한다.

피드백

•
리뷰어 : 도메인 객체를 작은 단위로 분리하고, 지금까지 연습한 부분을 잘 적용해 구현했네요. 💯 요구사항을 잘못 이해한 부분이 있고, 컨벤션 관련한 피드백 좀 남겨 봅니다.
if (students.getSize() > MAX_STUDENTS) { throw new IllegalArgumentException(MAX_STUDENT_EXCEPTION); }
Java
복사
◦
생각정리 : session.java 객체에서 진행 중인 부분을 students에서 유호성 체크 하는게 맞다고 생각된다.
if (studentsMap.size() > MAX_STUDENTS) { throw new IllegalArgumentException(MAX_STUDENT_EXCEPTION); }
Java
복사
•
리뷰어 : enum에도 메시지를 보내는 방식으로 구현하면 어떨까?
if (!SessionType.RECRUITING.equals(status)) {
Java
복사
◦
생각정리 : 객체에서 분기처리하는게 아닌 enum에 질문하는 방식으로 객체에서 유효성체크를 하는것이 좀 더 깔끔하게 정리하는 방법
package nextstep.courses.domain; public enum SessionType { READY, RECRUITING, END; public static boolean isRecruiting(SessionType sessionType) { return sessionType == RECRUITING; } }
Java
복사
•
gitf링크 :
•
출처