-
Notifications
You must be signed in to change notification settings - Fork 1
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
refactor: 엔티티 필드 및 생성자 메서드 시그니처 변경 #850
base: develop
Are you sure you want to change the base?
Conversation
워크스루이 풀 리퀘스트는 여러 도메인 엔티티의 필드 순서와 메서드 시그니처를 재구성하는 리팩토링 작업입니다. 주요 변경 사항은 엔티티 클래스들의 필드 선언 순서, 생성자 파라미터 순서, 그리고 일부 필드 추가 및 제거를 포함합니다. 변경의 목적은 코드의 일관성을 높이고 엔티티 구조를 표준화하는 것입니다. 변경 사항
이슈 평가
관련 가능성 있는 PR
추천 리뷰어
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
Job Summary for GradleCheck Style and Test to Develop :: build-test
|
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.
Actionable comments posted: 3
🧹 Nitpick comments (7)
src/main/java/com/gdschongik/gdsc/domain/recruitment/domain/RecruitmentRound.java (1)
49-60
: 생성자 매개변수 순서가 개선되었습니다.필드 선언 순서와 동일하게 매개변수가 정렬되어 일관성이 향상되었습니다. 다만, 가독성을 위해 매개변수 그룹 사이에 빈 줄을 추가하는 것을 고려해보세요.
private RecruitmentRound( String name, RoundType roundType, final Period period, Recruitment recruitment, + Integer academicYear, SemesterType semesterType) {
src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyAchievement.java (1)
51-53
: 팩토리 메서드가 적절히 수정되었습니다!생성자와 동일한 순서로 파라미터가 변경되어 일관성이 유지되었습니다.
메서드의 의도를 더 명확히 하기 위해 다음과 같이 JavaDoc을 추가하는 것을 고려해보세요:
+ /** + * StudyAchievement 엔티티를 생성합니다. + * + * @param achievementType 학습 성취 유형 + * @param student 학생 멤버 + * @param study 스터디 + * @return 생성된 StudyAchievement 엔티티 + */ public static StudyAchievement create(AchievementType achievementType, Member student, Study study) {src/main/java/com/gdschongik/gdsc/domain/recruitment/domain/Recruitment.java (2)
23-24
: 필드 유효성 검사 추가 필요
feeName
필드에 JPA 유효성 검사를 추가하는 것이 좋겠습니다. 데이터 무결성을 보장하기 위해 다음과 같은 제약 조건을 고려해 보세요:- private String feeName; + @Column(name = "fee_name", length = 100, nullable = false) + private String feeName;
41-48
: 팩토리 메서드가 잘 구현되었습니다.매개변수 순서가 생성자와 일관성 있게 변경되었습니다. 다만, 메서드의 용도를 명확히 하기 위해 JavaDoc 추가를 제안드립니다.
+ /** + * Recruitment 엔티티를 생성합니다. + * @param feeName 납부금 이름 + * @param fee 납부금액 + * @param semesterPeriod 학기 기간 + * @param academicYear 학년도 + * @param semesterType 학기 구분 + * @return 생성된 Recruitment 엔티티 + */ public static Recruitment create(src/main/java/com/gdschongik/gdsc/domain/order/domain/Order.java (1)
67-83
: 생성자 매개변수 순서도 필드 순서와 일치시켜야 합니다.필드 순서를 재정렬할 때 생성자의 매개변수 순서도 동일하게 맞춰주시면 코드의 일관성이 향상될 것 같습니다.
private Order( String nanoId, + String paymentKey, + ZonedDateTime approvedAt, + ZonedDateTime canceledAt, + OrderStatus status, + MoneyInfo moneyInfo, Long memberId, Long membershipId, Long recruitmentRoundId, - Long issuedCouponId, - OrderStatus status, - MoneyInfo moneyInfo) { + Long issuedCouponId) {src/main/java/com/gdschongik/gdsc/domain/study/domain/AssignmentHistory.java (1)
64-71
: 생성자 매개변수 순서를 필드 순서와 일치시키는 것이 좋겠습니다.현재 필드는 다음 순서로 잘 정리되어 있습니다:
- ID
- 일반 필드 (submissionLink, commitHash, contentLength, committedAt)
- Enum 필드 (submissionStatus, submissionFailureType)
- 관계 필드 (studyDetail, member)
하지만 생성자의 매개변수 순서는 이와 다릅니다. 일관성을 위해 다음과 같이 변경하는 것을 제안합니다:
private AssignmentHistory( - AssignmentSubmissionStatus submissionStatus, - SubmissionFailureType submissionFailureType, - StudyDetail studyDetail, - Member member) { + StudyDetail studyDetail, + Member member, + AssignmentSubmissionStatus submissionStatus, + SubmissionFailureType submissionFailureType) { this.submissionStatus = submissionStatus; this.submissionFailureType = submissionFailureType; this.studyDetail = studyDetail; this.member = member; }src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyDetail.java (1)
54-56
: 엔티티 필드 순서 개선 필요PR 목적에 따라 관계 필드는 마지막에 위치해야 하지만, 현재는 다른 필드들 사이에 위치해 있습니다. 필드 순서를 다음과 같이 정리하는 것이 좋습니다:
- Id 필드
- 일반 필드
- enum 필드
- VO 필드
- 관계 필드
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (12)
src/main/java/com/gdschongik/gdsc/domain/coupon/domain/IssuedCoupon.java
(2 hunks)src/main/java/com/gdschongik/gdsc/domain/member/domain/Member.java
(1 hunks)src/main/java/com/gdschongik/gdsc/domain/membership/domain/Membership.java
(2 hunks)src/main/java/com/gdschongik/gdsc/domain/order/domain/Order.java
(3 hunks)src/main/java/com/gdschongik/gdsc/domain/recruitment/domain/Recruitment.java
(1 hunks)src/main/java/com/gdschongik/gdsc/domain/recruitment/domain/RecruitmentRound.java
(1 hunks)src/main/java/com/gdschongik/gdsc/domain/study/domain/AssignmentHistory.java
(1 hunks)src/main/java/com/gdschongik/gdsc/domain/study/domain/Study.java
(1 hunks)src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyAchievement.java
(2 hunks)src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyAnnouncement.java
(1 hunks)src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyDetail.java
(1 hunks)src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyHistory.java
(2 hunks)
🔇 Additional comments (16)
src/main/java/com/gdschongik/gdsc/domain/recruitment/domain/RecruitmentRound.java (2)
37-39
: 필드 선언이 잘 구성되어 있습니다!엔티티 필드 순서 규칙에 맞게 enum 필드가 적절히 배치되었습니다.
62-70
: 정적 팩토리 메서드가 적절히 수정되었습니다.매개변수 순서가 생성자와 일치하도록 개선되었으며, recruitment에서 기본 엔티티 필드를 가져오는 방식이 명확합니다.
src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyAchievement.java (2)
33-34
: 필드 선언이 적절히 개선되었습니다!
@Enumerated(EnumType.STRING)
어노테이션 추가와 필드 순서 변경이 잘 이루어졌습니다. 특히 EnumType을 STRING으로 지정한 것이 데이터 안정성 측면에서 좋은 선택입니다.
45-46
: 생성자 시그니처가 일관성 있게 변경되었습니다!필드 순서와 동일하게 파라미터 순서를 변경하여 코드의 일관성이 향상되었습니다.
src/main/java/com/gdschongik/gdsc/domain/recruitment/domain/Recruitment.java (1)
33-37
: 생성자 매개변수 순서 변경이 적절합니다.PR 목적에 맞게 필드 순서가 잘 정리되었으며, 부모 클래스 생성자 호출도 올바르게 구현되었습니다.
src/main/java/com/gdschongik/gdsc/domain/order/domain/Order.java (1)
Line range hint
91-114
: 정적 팩토리 메서드 구현이 잘 되어있습니다.
createPending
과createFree
메서드가 각각의 상태에 맞게 적절히 구현되어 있으며, 무료 주문에 대한 유효성 검사도 잘 구현되어 있습니다.src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyAnnouncement.java (2)
32-34
: 필드 순서 변경이 잘 되었습니다!관계 필드(relationship field)를 엔티티 끝부분으로 이동한 것이 좋은 구조적 개선입니다.
FetchType.LAZY
를 사용한 것도 적절합니다.
37-40
: 생성자 매개변수 순서 변경에 따른 영향도 확인이 필요합니다.생성자의 매개변수 순서가 변경되었습니다. 이 변경이 다른 코드에 미치는 영향을 확인해야 합니다.
✅ Verification successful
생성자 매개변수 순서 변경은 안전합니다.
빌더 패턴을 통해서만 객체가 생성되고 있어, 생성자의 매개변수 순서 변경이 다른 코드에 영향을 주지 않습니다. 직접적인 생성자 호출이 발견되지 않았으며, 모든 객체 생성이 빌더를 통해 이루어지고 있습니다.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: 생성자 사용 패턴 검색 # StudyAnnouncement 생성자 호출 패턴 검색 rg "new StudyAnnouncement\(" --type javaLength of output: 42
Script:
#!/bin/bash # Description: 다양한 패턴으로 StudyAnnouncement 사용 검색 # 클래스 이름으로 전체 검색 echo "=== StudyAnnouncement 관련 파일 검색 ===" rg "StudyAnnouncement" --type java -l # Builder 패턴 사용 검색 echo -e "\n=== Builder 패턴 사용 검색 ===" rg "StudyAnnouncement\.builder\(\)" --type java -A 5 # 테스트 파일에서 사용 패턴 검색 echo -e "\n=== 테스트 파일에서 사용 검색 ===" fd -e java -g "*Test.java" --exec rg "StudyAnnouncement" {}Length of output: 1764
src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyHistory.java (1)
38-42
: 필드 순서가 잘 정리되었습니다!엔티티 필드가 다음과 같은 순서로 잘 정리되어 있습니다:
- ID 필드
- 일반 필드 (repositoryLink)
- Enum 필드 (studyHistoryStatus)
- 관계 필드 (student, study)
src/main/java/com/gdschongik/gdsc/domain/coupon/domain/IssuedCoupon.java (1)
35-39
: 필드 순서와 생성자 시그니처가 일관성있게 변경되었습니다!
- 필드가 ID, 일반 필드(hasRevoked, usedAt), 관계 필드(coupon, member) 순으로 정리되었습니다.
- 생성자 매개변수 순서도 필드 순서와 일치하도록 변경되었습니다.
Also applies to: 49-50
src/main/java/com/gdschongik/gdsc/domain/membership/domain/Membership.java (1)
37-39
: 필드 순서와 생성자 시그니처가 잘 정리되었습니다!
- 필드가 ID, 값 객체(regularRequirement), 관계 필드(member, recruitmentRound) 순으로 정리되었습니다.
- 생성자 매개변수도 필드 순서와 동일하게 변경되었습니다.
Also applies to: 49-50
src/main/java/com/gdschongik/gdsc/domain/study/domain/StudyDetail.java (1)
64-65
: 생성자 매개변수 순서가 적절합니다.필드 순서와 일관성 있게 생성자 매개변수가 정리되었습니다.
src/main/java/com/gdschongik/gdsc/domain/study/domain/Study.java (2)
55-60
: 시간 관련 필드가 적절하게 추가되었습니다.시작 시간과 종료 시간 필드가 명확한 주석과 함께 추가되었습니다.
83-92
: 생성자와 create 메서드의 매개변수 순서가 일관성 있게 변경되었습니다.필드 순서와 동일한 패턴으로 매개변수가 정리되었으며, 모든 유효성 검사 로직이 잘 유지되고 있습니다.
Also applies to: 107-116
src/main/java/com/gdschongik/gdsc/domain/member/domain/Member.java (2)
42-43
: 필드 순서가 체계적으로 정리되었습니다.Id, 일반 필드, enum 필드 순으로 잘 정리되었습니다.
Also applies to: 46-47, 57-70
79-105
: 생성자 매개변수 순서가 필드 순서와 일치하도록 잘 변경되었습니다.필드 순서와 동일한 패턴으로 생성자 매개변수가 정리되었습니다.
public static StudyAnnouncement create(String title, String link, Study study) { | ||
return StudyAnnouncement.builder().title(title).link(link).study(study).build(); |
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.
💡 Codebase verification
팩토리 메서드 호출 순서가 잘못되었습니다.
StudyAnnouncement.create()
메서드는 (title, link, study)
순서로 매개변수를 기대하지만, 다음 위치에서 잘못된 순서로 호출되고 있습니다:
src/main/java/com/gdschongik/gdsc/domain/study/application/MentorStudyService.java
에서(study, title, link)
순서로 전달하고 있습니다.
매개변수 순서를 StudyAnnouncement.create(request.title(), request.link(), study)
로 수정해야 합니다.
🔗 Analysis chain
팩토리 메서드 시그니처 변경에 따른 영향도 확인이 필요합니다.
create
메서드의 매개변수 순서가 변경되었습니다. 이 메서드를 사용하는 모든 곳에서 올바른 순서로 인자를 전달하는지 확인이 필요합니다.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: create 메서드 호출 패턴 검색
# StudyAnnouncement.create 메서드 호출 패턴 검색
rg "StudyAnnouncement\.create\(" --type java
Length of output: 241
public static StudyDetail create(Long week, String attendanceNumber, Period period, Study study) { | ||
return StudyDetail.builder() | ||
.study(study) | ||
.week(week) | ||
.period(period) | ||
.attendanceNumber(attendanceNumber) | ||
.period(period) | ||
.curriculum(Curriculum.empty()) | ||
.assignment(Assignment.empty()) | ||
.study(study) |
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.
중복된 period 설정 수정 필요
builder 호출에서 period가 두 번 설정되고 있습니다:
return StudyDetail.builder()
.week(week)
- .period(period)
.attendanceNumber(attendanceNumber)
.period(period)
.curriculum(Curriculum.empty())
.assignment(Assignment.empty())
.study(study)
.build();
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
public static StudyDetail create(Long week, String attendanceNumber, Period period, Study study) { | |
return StudyDetail.builder() | |
.study(study) | |
.week(week) | |
.period(period) | |
.attendanceNumber(attendanceNumber) | |
.period(period) | |
.curriculum(Curriculum.empty()) | |
.assignment(Assignment.empty()) | |
.study(study) | |
public static StudyDetail create(Long week, String attendanceNumber, Period period, Study study) { | |
return StudyDetail.builder() | |
.week(week) | |
.attendanceNumber(attendanceNumber) | |
.period(period) | |
.curriculum(Curriculum.empty()) | |
.assignment(Assignment.empty()) | |
.study(study) |
Job Summary for GradleCheck Style and Test to Develop :: build-test
|
🌱 관련 이슈
📌 작업 내용 및 특이사항
📝 참고사항
📚 기타
Summary by CodeRabbit
릴리즈 노트
도메인 변경
기능 변경
이번 업데이트는 시스템의 내부 구조를 최적화하고 코드의 일관성을 높이는 데 중점을 두었습니다.