-
Notifications
You must be signed in to change notification settings - Fork 248
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
재성님 안녕하세요! lms 마지막 요구사항 변경 부분 진행해봤습니다! #396
base: jhd7130
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
마지막 단계 구현하느라 수고했어요. 👍
구현 코드 중에 부생성자를 통해 인스턴스 변수 초기화하는 부분들이 많이 보이네요.
인스턴스 변수는 주생성자에서만 초기화하는 것을 추천하니 마지막 피드백 반영할 때 이 부분만 신경써서 리팩터링해보면 좋겠어요.
import java.util.List; | ||
import java.util.Set; | ||
|
||
public class CoverImages { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
this.id = id; | ||
this.title = title; | ||
this.coverImages.addAll(coverImages); | ||
this.lectureStatus = LectureStatus.YET; | ||
this.lectureRecruitingStatus = lectureRecruitingStatus; | ||
this.registrationPeriod = registrationPeriod; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
중복 제거를 위해 부생성자가 주생성자를 호출해 인스턴스 변수 값을 초기화할 것을 추천
public boolean recruiting() { | ||
return LectureStatus.RECRUITING.equals(this.lectureStatus); | ||
public boolean isRecruiting() { | ||
return LectureRecruitingStatus.RECRUITING.equals(this.lectureRecruitingStatus); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
return LectureRecruitingStatus.RECRUITING.equals(this.lectureRecruitingStatus); | |
return lectureRecruitingStatus.isRecruiting(); |
enum 또한 객체라 메시지를 보내 구현 가능함
RECRUITING("RECRUITING") | ||
, CLOSING("CLOSING") | ||
, PREPARING("PREPARING") | ||
, NO_MATCH("NO_MATCH") | ||
; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
RECRUITING("RECRUITING") | |
, CLOSING("CLOSING") | |
, PREPARING("PREPARING") | |
, NO_MATCH("NO_MATCH") | |
; | |
RECRUITING("RECRUITING"), | |
CLOSING("CLOSING"), | |
PREPARING("PREPARING"), | |
NO_MATCH("NO_MATCH"); |
위와 같이 스타일로 구현하는 것도 가능함
Lecture lecture = new PaidLecture(0L, "test", coverImage, LectureRecruitingStatus.PREPARING, | ||
new RegistrationPeriod(startDate, endDate), new Price(BigDecimal.TEN), maxStudent); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lecture 객체와 같이 인스턴스 변수가 많은 객체를 테스트하려면 객체를 생성하는데 어려움이 있다.
중복 코드 또한 많이 발생해 Lecture를 생성할 때 생성자의 인자가 변경되는 경우 변경할 부분이 많아진다.
https://www.arhohuttunen.com/test-data-builders/ 문서 참고해 Lecture와 같이 복잡한 객체의 테스트 데이터를 생성할 때 어떤 방법을 사용할 것인지 선택해 보면 좋겠다.
이번 기회에 내가 선호하는 방법을 적용해 보고 앞으로도 쭈욱 활용하는 방식이면 좋겠다.
기존 코드를 짤 때 '수강 신청 도메인' 없이 선발 인원 리스트에 없으면 수강 신청을 못하게 해놔서 수강신청 취소에 대한 기능을 넣지 않았습니다!
리뷰 부탁드립니다 😄