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

[step1] refactor: Controller 로직 분리 및 서비스 계층 적용 #4

Merged
merged 11 commits into from
Jan 26, 2025

Conversation

seeeeeeong
Copy link
Collaborator

@seeeeeeong seeeeeeong commented Jan 24, 2025

  • Controller 로직을 Service와 Repository로 분리하였습니다.
  • UrlShortenService에 대한 테스트 코드를 작성했습니다.

@Hyune-c Hyune-c self-requested a review January 24, 2025 13:59
Copy link
Collaborator

@Hyune-c Hyune-c left a comment

Choose a reason for hiding this comment

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

기능 요구 사항에는 shorten-url 생성, shorten-url 조회 로 기록해주셨습니다.
하지만 실제로 구현된 것은 ApiResponse, ExceptionHandler 등 API 인터페이스에 대한 부분이 대거 들어가 있습니다.

너무 많은 변경이 들어있는 pr 입니다.

@seeeeeeong seeeeeeong changed the title shorten-url 개선 사항 refactor: Controller 로직 분리 및 서비스 계층 적용 Jan 24, 2025
Copy link
Collaborator Author

@seeeeeeong seeeeeeong left a comment

Choose a reason for hiding this comment

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

  • Controller 로직을 Service와 Repository로 분리하였습니다.
  • UrlShortenService에 대한 테스트 코드를 작성했습니다.

@Hyune-c Hyune-c self-requested a review January 25, 2025 10:12
build.gradle.kts Outdated

// Lombok
compileOnly("org.projectlombok:lombok")
annotationProcessor("org.projectlombok:lombok")
Copy link
Collaborator

Choose a reason for hiding this comment

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

lombok 이 꼭 필요한가요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Controller와 Service에서 편의성을 위해 @requiredargsconstructor를 사용하기 위해 Lombok을 활용해왔습니다. 이에 대해 찾아보니 생성자 주입의 경우 Lombok을 사용해도 괜찮다는 의견과, 지양해야 한다는 의견이 있어 이에 대해 멘토님의 의견이 궁금합니다.

Copy link
Collaborator

Choose a reason for hiding this comment

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

저는 lombok 사용을 선호하지 않습니다. 하지만 어쩔수 없이 사용하긴 할 것 같습니다.

  • dto 생성은 record 로 대체할 수 있지만, 생성자 주입과 로그는 대체가 힘들어서 입니다.

그리고 코멘트에 @ 를 다실 때는 블럭으로 감싸주세요.

Comment on lines 17 to 18
@DisplayName("shorten-url을 생성하고 조회한다.")
void shortenUrlCreateAndSearch() {
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
@DisplayName("shorten-url을 생성하고 조회한다.")
void shortenUrlCreateAndSearch() {
void shorten_url을_생성하고_조회한다() {

nit 저는 이런 형태를 더 선호 합니다.

  • DisplayName 을 따로 써야되는 것은 둘째치고, 그것에 해당하는 메서드를 영작해야되는데 꽤 귀찮습니다.
  • 꼭 이렇게 써야된다면 저는 메서드 이름을 그냥 test1 로 했던 것 같습니다.
  • 사실 이제는 kotlin 으로 넘어와서 큰 신경 안쓰고 있습니다.

String key = urlShortenService.shortenUrlCreate(expectedOriginUrl);
String originUrl = urlShortenService.shortenUrlSearch(key);

assertTrue(originUrl.equals(expectedOriginUrl));
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
assertTrue(originUrl.equals(expectedOriginUrl));
assertThat(originUrl).isEqualTo(expectedOriginUrl);

nit

}

public String shortenUrlCreate(String originUrl) {
String randomKey = String.valueOf(new Random().nextInt(10000));
Copy link
Collaborator

Choose a reason for hiding this comment

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

new Random() 이 메서드 안에 있는 것이 의도된 것일까요?


private final UrlShortenRepository urlShortenRepository;

public String shortenUrlSearch(String key) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

shortenUrl 이 반복되는 것이 의도된 것일까요?


public String shortenUrlSearch(String key) {
return urlShortenRepository.findByKey(key)
.orElseThrow(() -> new IllegalArgumentException("Invalid key"));
Copy link
Collaborator

Choose a reason for hiding this comment

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

로직상 존재하지 않는 key 인 경우 예외가 발생됩니다.

  • Invalid key 는 존재하지 않는 key 를 뜻하는 것일까요?

}

public String shortenUrlCreate(String originUrl) {
String randomKey = String.valueOf(new Random().nextInt(10000));
Copy link
Collaborator

Choose a reason for hiding this comment

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

randomKey 채번의 위치가 여기가 맞을까요?

@seeeeeeong seeeeeeong requested a review from Hyune-c January 25, 2025 18:36
Copy link
Collaborator

@Hyune-c Hyune-c left a comment

Choose a reason for hiding this comment

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

코드 자체에는 아직 문제가 있습니다. 하지만 이미 2번의 리뷰를 거쳤고, pr 제목의 목적에는 충분한 코드이기에 approve 합니다.

@Hyune-c Hyune-c changed the title refactor: Controller 로직 분리 및 서비스 계층 적용 [step0] refactor: Controller 로직 분리 및 서비스 계층 적용 Jan 25, 2025
@seeeeeeong seeeeeeong merged commit d9e840d into whatever-mentoring:seeeeeeong Jan 26, 2025
@Hyune-c Hyune-c changed the title [step0] refactor: Controller 로직 분리 및 서비스 계층 적용 [step1] refactor: Controller 로직 분리 및 서비스 계층 적용 Jan 26, 2025
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.

2 participants