-
Notifications
You must be signed in to change notification settings - Fork 308
Step2 : 수강신청(도메인 모델) #805
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
Step2 : 수강신청(도메인 모델) #805
Conversation
javajigi
left a comment
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.
2단계는 역시나 테이블과 매핑하지 않아 작은 단위의 여러 객체로 분리 👍
전체적인 객체 설계와 단위 테스트 구현 잘 했네요.
그럼에도 불구하고 한번 더 고민해 봤으면 하는 부분이 있어 피드백 남겨요.
Q1. 무료인 경우와 유료인 경우를 구분하는 것인데요
특히 무료인 경우 수강료와 정원을 0 으로 두어야할지 고민이 되었습니다.
0 으로 두기에는 객체에 대한 도메인을 오염시킨다는 생각이 들었습니다.
그래서 null 이라는 것이 프로그램적으로는 위험할 수 있지만, 의미 그대로 존재하지 않는다 생각해서 null 로 이용했습니다
혹시 이렇게 접근하는게 괜찮을까요?
A1. null로 구현하기보다 null을 추상화한 Null Object를 추가해 보는 것은 어떨까요?
AI에게 Null Object에 대해 질문해 보고 피드백을 받아 적용해 볼 것을 추천합니다.
Q2. 무료 유료를 구분하면서 ProvidePolicy 를 초기화 하는데 new ProvidePolicy() 빈 생성자인 경우를 무료로 정의했습니다.
유료인 경우는 new ProvidePolicy(x, y) 인자가 있는 경우로 정의 했습니다.
이렇게 접근하는 것이 개발하는 과정에서 계속 불편했는데요 이렇게 접근이 괜찮을까요?
아니면 고민하다가 전략패턴으로 도전해볼까 고민했는데, 오버엔지니어링이라 생각들어서 일단 시도 하지 않았습니다.
A2. 무료 유료 구분에 따른 구분은 ProvideType 값에 따라 결정되어야 하지 않을까요?
생성자 유무로 판단하는 것은 적절해 보이지 않은 것 같아요.
Q3. 상위 객체 메서드부터 여러 단계의 하위 객체의 메서드까지 파라미터 터널링 이 몇부분 보이는데요 이부분도 걱정이됩니다.
A3. 피드백에도 남겼는데요.
상위 객체의 필드도 private으로 구현하고 메서드를 통해 접근할 것을 추천합니다.
1. Base를 추상 클래스로 구현하여 상속전용으로만 하고 직접 생성은 자식이 못하게 막음 (도메인 객체처럼 사용할 우려 막음) 2. Base 의 필드를 private 로 변경해 직접 수정 못하게 막음
…해 도메인 강조, 비슷한 객체를 이용 시 코드 줄이기위한 but 사용) 사용하여 리팩터링
|
안녕하세요? 말씀주신 Null object, 테스트 픽스쳐 줄이는 방법을 적용했습니다. 질문 드립니다. |
javajigi
left a comment
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.
피드백 반영 👍
도메인 객체 설계부터 접근하다보니 정말 많은 도메인 객체가 추가되었네요.
이 객체들이 어떻게 db와 매핑될지 궁금하네요.
가능하면 도메인 객체를 유지한 상태로 db와 매핑하는 것에 도전해 보면 좋겠습니다.
안녕하세요? 리뷰요청드립니다
프로그래밍 요구사항대로 하면서 점점 실무와 연결되는 느낌이 있었습니다! 좋은 과정 감사드립니다
요구조건이 몇 부분 모호해서 그런지(실무도 사실 그렇죠 😂) 개발하면서 생각보다 많은 시간이 소요되었네요
일단은 한번이라도 더 리뷰 요청드리고 다시 리팩터링 하는것이 바람직하다고 생각들어서 요청드립니다
다만 개발을 하면서 가장 고민되는 부분이 있었습니다.
특히 무료인 경우 수강료와 정원을 0 으로 두어야할지 고민이 되었습니다.
0 으로 두기에는 객체에 대한 도메인을 오염시킨다는 생각이 들었습니다.
그래서 null 이라는 것이 프로그램적으로는 위험할 수 있지만, 의미 그대로 존재하지 않는다 생각해서 null 로 이용했습니다
혹시 이렇게 접근하는게 괜찮을까요?
ProvidePolicy를 초기화 하는데new ProvidePolicy()빈 생성자인 경우를 무료로 정의했습니다.유료인 경우는
new ProvidePolicy(x, y)인자가 있는 경우로 정의 했습니다.이렇게 접근하는 것이 개발하는 과정에서 계속 불편했는데요 이렇게 접근이 괜찮을까요?
아니면 고민하다가 전략패턴으로 도전해볼까 고민했는데, 오버엔지니어링이라 생각들어서 일단 시도 하지 않았습니다.
파라미터 터널링이 몇부분 보이는데요 이부분도 걱정이됩니다.감사합니다 👍