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

[FE] Dropdown 컴포넌트 제작 및 시간 선택 hook 구현 #71

Merged
merged 9 commits into from
Jul 25, 2024

Conversation

Largopie
Copy link
Contributor

관련 이슈

작업 내용

image
  • 드롭다운 컴포넌트 구현
  • 시간 선택 hook 구현
    • 시간 선택 시, startTime이 endTime을 느리거나 endTime이 startTime보다 빠르면 선택되지 않도록 구현
  • 시간 선택 hook이 정상적으로 동작하는지 테스트케이스 작성

특이 사항

  • 시간 선택 시, startTime이 endTime을 느리거나 endTime이 startTime보다 빠르면 선택되지 않도록 구현

이 부분은 추후에 변경사항이 생길 수도 있지만 일단은 구현해두었습니다!

리뷰 요구사항 (선택)

@Largopie Largopie added 🐈 프론트엔드 프론트엔드 관련 이슈에요 :) 🚀 기능 기능을 개발해요 :) labels Jul 24, 2024
@Largopie Largopie added this to the 2차 데모데이 milestone Jul 24, 2024
Copy link

github-actions bot commented Jul 24, 2024

Test Results

0 tests   0 ✅  0s ⏱️
0 suites  0 💤
0 files    0 ❌

Results for commit eca2f5d.

♻️ This comment has been updated with latest results.

Copy link
Contributor

@hwinkr hwinkr 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 31 to 32
if (endHours < startHours) return false;
else if (endHours === startHours && endMinutes < startMinutes) return false;
Copy link
Contributor

@hwinkr hwinkr Jul 24, 2024

Choose a reason for hiding this comment

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

[P2]

Suggested change
if (endHours < startHours) return false;
else if (endHours === startHours && endMinutes < startMinutes) return false;
if (endHours < startHours) return false;
if (endHours === startHours && endMinutes < startMinutes) return false;

early return을 해주기 때문에, else if문을 사용할 필요는 없을 것 같아요 :)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

그렇네요! 수정하도록 하겠습니다 🐫👍

}

// 만약 시작 시간보다 끝 시간이 빠르다면 false를 반환하는 함수(@낙타)
export function compareTimes(startTime: string, endTime: string) {
Copy link
Contributor

@hwinkr hwinkr Jul 24, 2024

Choose a reason for hiding this comment

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

[P2]

함수명이 시간을 비교한다는 의미를 내포하고 있는 것 같은데, 보다 확실하게 어떤 동작을 하고 무엇을 반환하는지를 더 잘 표현하도록 함수명을 변경해보는 것은 어떨까요?

예를들어, checkStartTimeEarlier 와 같은...?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

오 굉장히 좋은데요! 👍 반영하겠습니다 감사해요 :)

Comment on lines 10 to 11
expect(result.current.startTime).toBe('0:00');
expect(result.current.endTime).toBe('23:00');
Copy link
Contributor

@hwinkr hwinkr Jul 24, 2024

Choose a reason for hiding this comment

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

[P3]

시간이 된다면 해당 매직 넘버에 대한 상수화를 진행해보는 것이 괜찮을 것 같네요!!

저도 이번 스프린트가 끝나면 엄청난 상수화를 해야 하기에....매직 넘버가 눈에 띄네요 ㅋㅋ

Copy link
Contributor

Choose a reason for hiding this comment

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

[C]

++ hook, util 파일에서 정의하신 상수를 사용해봐도 좋을 것 같아요~!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

일단 가장 먼저 필요에 의한 상수 정의는 해당 폴더의 constant파일에 별도로 정의해두도록 하겠습니다! 의견 고마워요! ☺️

result.current.onStartTimeChange(CHANGE_TIME);
});

expect(result.current.startTime).not.toBe(CHANGE_TIME);
Copy link
Contributor

@hwinkr hwinkr Jul 24, 2024

Choose a reason for hiding this comment

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

[P2]

not을 사용해서 검증하기 보다는, 변경되지 않을 때의 값과 비교해보는 것은 어떨까요? 현재는 CHANGE_TIME만 아니면 통과하기 때문에, 더 정확한 테스트를 위해서 특정 값 자체와 동등 연산자로 비교하는 것이 괜찮을 것 같다는 생각이 들어요~

Copy link
Contributor Author

Choose a reason for hiding this comment

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

이 부분은 제가 고민하고 수정한 부분인데요!
특정 값 자체와 동등 연산자로 비교하기보다는 클릭했을 때 '선택되지 않는다'에 초점을 더 맞추어서 구현한 테스트케이스 입니다!

제 생각으로는 "1시를 선택했는데 1시로 변경되지 않는다." 라는 컨텍스트의 입장에서는 맞는 테스트케이스라고 생각했습니다!

해리는 다른 의견이실까요?!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

++ 추가적으로 해당 내용에 대해서 아예 선택하지 않게끔 options 값을 유동적으로 변화하게 코드를 수정해보겠습니다!

Copy link
Contributor

@Yoonkyoungme Yoonkyoungme left a comment

Choose a reason for hiding this comment

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

낙타 고생했습니다!! 작업 속도가 엄청 빠르네요~! 간단한 코멘트 남겼는데, 천천히 확인해 보세요!

}

// 만약 시작 시간보다 끝 시간이 빠르다면 false를 반환하는 함수(@낙타)
export function compareTimes(startTime: string, endTime: string) {
Copy link
Contributor

Choose a reason for hiding this comment

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

[C]

boolean 값을 리턴하니까
isTimeRangeValid 이런 느낌의 네이밍은 어떤가요?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

이게 좋네요! 👍👍👍

Comment on lines 10 to 11
expect(result.current.startTime).toBe('0:00');
expect(result.current.endTime).toBe('23:00');
Copy link
Contributor

Choose a reason for hiding this comment

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

[C]

++ hook, util 파일에서 정의하신 상수를 사용해봐도 좋을 것 같아요~!

@Largopie Largopie assigned Largopie and unassigned hwinkr and Yoonkyoungme Jul 25, 2024
Copy link
Contributor Author

@Largopie Largopie left a comment

Choose a reason for hiding this comment

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

리뷰 반영 완료했습니다 :)

현재는 시작시간은 끝 시간을 초과할 수 없고, 끝 시간은 시작 시간 이전으로 설정할 수 없게끔 옵션값이 변경되도록 수정했습니다.

하지만 추후에 아래의 동영상과 hover되었을 때 끝 시간이 변경되도록 수정하면 좋을 것 같네요!

2024-07-25.2.11.18.mov

Comment on lines 10 to 11
expect(result.current.startTime).toBe('0:00');
expect(result.current.endTime).toBe('23:00');
Copy link
Contributor Author

Choose a reason for hiding this comment

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

일단 가장 먼저 필요에 의한 상수 정의는 해당 폴더의 constant파일에 별도로 정의해두도록 하겠습니다! 의견 고마워요! ☺️

result.current.onStartTimeChange(CHANGE_TIME);
});

expect(result.current.startTime).not.toBe(CHANGE_TIME);
Copy link
Contributor Author

Choose a reason for hiding this comment

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

이 부분은 제가 고민하고 수정한 부분인데요!
특정 값 자체와 동등 연산자로 비교하기보다는 클릭했을 때 '선택되지 않는다'에 초점을 더 맞추어서 구현한 테스트케이스 입니다!

제 생각으로는 "1시를 선택했는데 1시로 변경되지 않는다." 라는 컨텍스트의 입장에서는 맞는 테스트케이스라고 생각했습니다!

해리는 다른 의견이실까요?!

result.current.onStartTimeChange(CHANGE_TIME);
});

expect(result.current.startTime).not.toBe(CHANGE_TIME);
Copy link
Contributor Author

Choose a reason for hiding this comment

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

++ 추가적으로 해당 내용에 대해서 아예 선택하지 않게끔 options 값을 유동적으로 변화하게 코드를 수정해보겠습니다!

}

// 만약 시작 시간보다 끝 시간이 빠르다면 false를 반환하는 함수(@낙타)
export function compareTimes(startTime: string, endTime: string) {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

오 굉장히 좋은데요! 👍 반영하겠습니다 감사해요 :)

}

// 만약 시작 시간보다 끝 시간이 빠르다면 false를 반환하는 함수(@낙타)
export function compareTimes(startTime: string, endTime: string) {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

이게 좋네요! 👍👍👍

Comment on lines 31 to 32
if (endHours < startHours) return false;
else if (endHours === startHours && endMinutes < startMinutes) return false;
Copy link
Contributor Author

Choose a reason for hiding this comment

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

그렇네요! 수정하도록 하겠습니다 🐫👍

Copy link
Contributor

@hwinkr hwinkr 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
Contributor

@Yoonkyoungme Yoonkyoungme 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
Contributor

@Yoonkyoungme Yoonkyoungme Jul 25, 2024

Choose a reason for hiding this comment

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

hooks, components 내에서만 사용하는 상수파일을 어떻게 분리할지 (ex: constants.ts / hook명.constants.ts, ... 등)에 대해서도 스프린트 끝나고 이야기 나누면 좋을 것 같네요!
스프린트 이후 TODO 작업으로 남겨두겠습니다~

@Largopie Largopie merged commit 8a83bd9 into develop Jul 25, 2024
5 checks passed
@Largopie Largopie deleted the feat/70-select branch July 25, 2024 10:31
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.

[FE] Dropdown 컴포넌트와 시간 선택 hook을 만들어요 :)
3 participants