학습 관리 시스템(LMS)
넥스트스텝은 재직자를 대상으로 소프트웨어 교육을 진행하는 교육 기관이다.
2018년 교육 사업을 시작했다.
교육 사업을 시작하며 자체적으로 학습 관리 시스템을 개발해 수강생을 모집하고, 컨텐츠를 관리하고 있다.
수강 신청 기능 요구사항
•
과정(Course)은 기수 단위로 여러 개의 강의(Session)를 가질 수 있다.
•
강의는 시작일과 종료일을 가진다.
•
강의는 강의 커버 이미지 정보를 가진다.
•
강의는 무료 강의와 유료 강의로 나뉜다.
•
강의 상태는 준비중, 모집중, 종료 3가지 상태를 가진다.
•
강의 수강신청은 강의 상태가 모집중일 때만 가능하다.
•
강의는 강의 최대 수강 인원을 초과할 수 없다.
프로그래밍 요구사항
•
DB 테이블 설계 없이 도메인 모델부터 구현한다.
•
도메인 모델은 TDD로 구현한다.
◦
단, Service 클래스는 단위 테스트가 없어도 된다.
•
다음 동영상을 참고해 DB 테이블보다 도메인 모델을 먼저 설계하고 구현한다.
피드백
•
리뷰어 : 도메인 객체를 작은 단위로 분리하고, 지금까지 연습한 부분을 잘 적용해 구현했네요. 요구사항을 잘못 이해한 부분이 있고, 컨벤션 관련한 피드백 좀 남겨 봅니다.
if (students.getSize() > MAX_STUDENTS) {
throw new IllegalArgumentException(MAX_STUDENT_EXCEPTION);
}
Java
복사
◦
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링크 :
•
출처