Skip to content
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: 상황에 맞는 페이지네이션 검증 #8

Merged
merged 2 commits into from
Jul 8, 2024

Conversation

yungic
Copy link
Contributor

@yungic yungic commented Jul 3, 2024

기중님이 구현한 코드에서는 pageable (pagerequest)이 서비스 에어리어에서 만들어지고

재원, 진희님이 구현한 코드에서는 pagealbe이 컨트롤러 에어리어에서 만들어지기 때문에, 각각 다른 코드로 만들어서

리팩터 진행했습니다.

세 분 어사인으로 걸어놨고, 다 확인하시면 어사인 하시고 머지 되게 해주시면 됩니다 :)

@GiJungPark GiJungPark closed this Jul 3, 2024
@GiJungPark GiJungPark reopened this Jul 3, 2024
@@ -32,6 +32,7 @@
@RequiredArgsConstructor
public class BookmarkController {

private final PageableValidation pageableValidation;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

의존성을 주입할 필요가 없습니다.
PageableValidation의 메서드를 static하게 작성해서 가져오면 됩니다.

} else if (size < 1){
throw new ValidationException("사이즈는 1 이상이어야 합니다.");
}
pageableValidation.pageValidate(page, size);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

팩토리 메서드 PageableValidation.pageValidate(page, size); 로 수정되겠네요.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해당사항은 pageableVaildation.pageVaildate(page, size)을 사용한 모든곳에 일괄로 수정하셔야 할 것 같습니다.

* Pageable 까지 만들어서 넘기는 버전, 그냥 검증한 하는 버전 두 가지 버전의 메서드를 구현
* 하나로 만들면 좋았겠다. 하지만 서비스단까지 바꿔야 하는 관계로 패스
*/
public void pageValidate(int page, int size) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

public static void pageValidate(int page, int size) 로 변경하시면 될 것 같습니다.

Copy link
Contributor

@wambatcodeeee wambatcodeeee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

b 0v0 b

Copy link
Contributor

@GiJungPark GiJungPark left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

정적 팩토리 메서드 패턴으로 변경하신 부분 확인했습니다.

@@ -66,7 +66,7 @@ public ResponseEntity<List<BookmarkListResponse>> getBookmarkedPapersByUserId(
@RequestParam(name = "page", defaultValue = "1") int page,
@RequestParam(name = "size", defaultValue = "20") int size) {

pageableValidation.pageValidate(page, size);
pageValidate(page, size);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PageableValidation 팩토리 메서드로 변경한점 확인했습니다.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:)

@@ -26,13 +25,14 @@

import java.util.List;

import static com.elice.ustory.global.Validation.PageableValidation.pageValidate;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

현재는 정적으로 Import 했는데, 이에 대한 장점과 단점을 고민해보시면서 사용하시면 좋을것 같아요.
지금은 팩토리 메서드 명 중복이 생길수 있는 위험성이나, 유추가 불가능한 메서드가 아니기 때문에 좋은것 같습니다.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인했습니다. 안 그래도 고민 했었는데 말 그대로 유추가 불가능하지 않아서 그대로 썼습니다.

private NoticeService noticeService;

public NoticeController(NoticeService noticeService, PageableValidation pageableValidation) {
this.pageableValidation = pageableValidation;
public NoticeController(NoticeService noticeService) {
this.noticeService = noticeService;
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

다른곳에서는 RequiredArgsConstructor 애너테이션을 사용했는데, 여기에서는 직접 생성자 주입 코드를 작성하신 이유가 있을까요?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Notice 컨트롤러를 구현해주신 진희님께서 생성자 주입 코드로 진행해 주셔서 애너테이션 대신 주입 코드를 작성 했습니다.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

음.. notice 부분을 애너테이션으로 고쳐놓는게 더 좋을까요???

@bellra-jin bellra-jin merged commit bb12421 into develop Jul 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants