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

[Feature] - 여행기 나라 관련 리팩토링 #586

Merged
merged 13 commits into from
Oct 24, 2024

Conversation

nak-honest
Copy link
Member

@nak-honest nak-honest commented Oct 24, 2024

✅ 작업 내용

  • TravelogueCountry 검증 로직 추가
  • CountryCode valueOf 예외 처리
  • CountryCode 가 NONE 인 경우 생성하지 않는 기능 추가
  • 태그 추가 기능 삭제

🙈 참고 사항

충분히 리팩토링을 하려 했지만, 버그 수정이 빨리 올라가야 할 것 같아 빠르게 PR 올립니다.

@nak-honest nak-honest added the BE label Oct 24, 2024
@nak-honest nak-honest added this to the sprint 6 milestone Oct 24, 2024
@nak-honest nak-honest self-assigned this Oct 24, 2024
Copy link

github-actions bot commented Oct 24, 2024

Test Results

 30 files   30 suites   8s ⏱️
291 tests 290 ✅ 1 💤 0 ❌
304 runs  303 ✅ 1 💤 0 ❌

Results for commit 0246790.

♻️ This comment has been updated with latest results.

Copy link

@eunjungL eunjungL left a comment

Choose a reason for hiding this comment

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

수고하셨습니다 👍
간단한 코멘트 남겨뒀으니 확인 부탁드려요

@@ -29,25 +21,6 @@ public class TagController {

private final TagService tagService;

@Operation(summary = "태그 생성")

Choose a reason for hiding this comment

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

👍

Copy link

@Libienz Libienz left a comment

Choose a reason for hiding this comment

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

고생하셨습니다. 도메인 로직 관련해서 하나만 코멘트 확인해주세요!

Comment on lines 65 to 69
private void validateCountryCode(CountryCode countryCode) {
if (countryCode == CountryCode.NONE) {
throw new BadRequestException("여행기의 국가 코드는 NONE 일 수 없습니다.");
}
}
Copy link

Choose a reason for hiding this comment

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

오잉? enum에 존재하는 값 중 하나만 예외적으로 처리되네요.
이 부분은 많이 어색한 것 같습니다.
CountryCode에 NONE이라는 값이 없던지 예외 처리를 안하는 방식이 자연스럽다고 생각해요.

해당 검증은 왜 필요한가요??

Copy link
Member Author

Choose a reason for hiding this comment

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

먼저 NONE은, 사용자가 검색 시 존재하지 않는 나라에 대해 검색을 하더라도 예외를 발생시키는 것이 아니라 빈 결과를 반환하기 위해 도입되었습니다. null을 반환해서 처리하는 방법도 있겠지만, 일종의 null object pattern으로 NONE을 도입한거구요!

하지만 TravelogueCountry 는 NONE 코드에 대해 저장될 필요가 없습니다.
NONE 을 null 로 감싼 것이라고 생각하면 말이죠.

하지만 해당 부분이 되려 도메인을 조금 복잡하게 만드는 경향이 있다는 생각이 드는 것 같습니다.
차라리 null로 처리하는 것이 나을수도 있을 것 같은데, 이에 대해 어떻게 생각하실까요??

Comment on lines 32 to 38
private Map<CountryCode, Long> countCountries(TravelogueRequest request) {
return request.days().stream()
.flatMap(day -> day.places().stream())
.map(place -> CountryCode.valueOf(place.countryCode()))
.filter(countryCode -> countryCode != CountryCode.NONE)
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
}
Copy link
Member Author

Choose a reason for hiding this comment

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

해당 부분은 일급 컬렉션으로 묶을까 하다, 두었는데 이에 대해 어떻게 생각하실까욥?

Comment on lines +71 to +75
private void validateCount(Integer count) {
if (count < MIN_COUNT) {
throw new BadRequestException(String.format("국가 코드의 개수는 %d 보다 커야합니다.", MIN_COUNT));
}
}
Copy link
Member Author

Choose a reason for hiding this comment

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

해당 부분은 개발자가 직접 계산해서 넣어주는 값이기 때문에, 사용자의 잘못된 요청이 아닌 서버의 에러로 봐야 한다고 생각하는데요.
이뿐만 아니라 null 체킹도 일부는 서버의 에러로 봐야할 것 같다고 생각합니다.

해당 부분은 이후에 같이 이야기해보면 좋을 것 같아요.

Copy link

@slimsha2dy slimsha2dy left a comment

Choose a reason for hiding this comment

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

수고하셨네요 낙낙.
바로 어프룹 드립니다!

Copy link

@hangillee hangillee left a comment

Choose a reason for hiding this comment

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

LGTM!

@nak-honest nak-honest merged commit 425166a into develop/be Oct 24, 2024
3 checks passed
@nak-honest nak-honest deleted the feature/be/#569 branch October 24, 2024 07:00
@nak-honest nak-honest linked an issue Oct 24, 2024 that may be closed by this pull request
2 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

[Feature] - 여행기 나라 관련 리팩토링
5 participants