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

[1단계 - 자동차 경주 구현] 엽토(김건엽) 미션 제출합니다. #167

Merged
merged 44 commits into from
Feb 11, 2023

Conversation

yeopto
Copy link

@yeopto yeopto commented Feb 9, 2023

안녕하세요 티케😀
장거리 여행 고생 많으셨어요!
첫 미션이라 많이 부족하지만 코드리뷰 잘 부탁드립니다!!!
피드백을 적극적으로 수용하겠습니다!! 많이 알려주시면 정~말 정말 감사하겠습니다🫡

yeopto added 29 commits February 7, 2023 15:43
.eslintrc.js Outdated Show resolved Hide resolved
Copy link

@devhyun637 devhyun637 left a comment

Choose a reason for hiding this comment

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

안녕하세요 엽토~ 리뷰어 티케입니다. 🧚‍♀️
사실 푸만능, 엽토, 첵스에게 쓰는 이 전반적인 리뷰 내용은 공통부분이 많습니다. 이해해주셔서 감사합니다

저도 리뷰어가 처음이라, 많이 긴장이 되고 걱정 반 설렘 반이에요! 저야말로 잘부탁드립니다~ 리뷰를 보면서 무조건 적용하거나 받아들이기보다는 늘 의심하면서 비판적으로 받아주세요! 저도 잘 모르는 부분이 있을 수 있고, 엽토가 어떠한 의도에서 개발했는지가 훨씬 중요하니깐요. 많이 들어보셨겠지만, 개발에는 정답이 없습니다 :) 또 개인적으로 이해가 안 가면 질문도 남겨주시고 공개적인 곳이 부담스러우면 DM도 좋아요! 같이 고민해 나가보아요 🧡

첫 미션이 시간이 짧았을 텐데, 여러 가지 병행하면서 이렇게나 빠른 리뷰를 올려주시다니 영광입니다!
리뷰를 하면서 pretter, MVC, 여러가지 자료구조를 사용한 점이 인상깊었습니다 👍👍 예외상황에 대한 구현목록을 써주신것도 좋았고, 그대로 테스트한것까지 완-벽⭐️ 커밋 메세지도 깔끔하네요! 매우 좋아요 :) 상수화도 꼼꼼히 하셨더라구요~ 관련 리뷰는 구체적인 코멘트를 참고해주세요 :)

[전반적인 리뷰]

  1. PR 메세지, README
    어떤 작업을 했는지 이 프로젝트가 무엇인지에 대한 설명이 README 파일에 담겨있으면 좋았을 것 같아요. 저희 오픈소스나 라이브러리 찾아볼 때 리드미를 통해서 어떤 프로젝트도 어떻게 사용할 수 있는지 파악하는 거랑 같은 맥락이에요. 리뷰미를 꾸며봅시다 💦
    또, 현업에서 일하다 보면 어떤 작업을 했는지 PR만 보고 파악하는 건 너무 어려워져서 저희 팀은 PR 템플릿을 통해서 자세하게 어떤 작업을 했는지 명시하는 작업을 하고 있어요. 우테코 미션도 동일하게 리뷰어들이 모든 미션에 대해 인지를 하려고 노력하지만 처음보는 사람들에게 리뷰를 맡긴다는 생각으로 엽토가 어떤 작업을 했고, 어떤 부분을 신경써서 했고, 구조는 어떻게 만들었으며, 어떤 점이 궁금했다, 어떤 점이 어려웠다, 실행했을 때의 이미지 등등 작업 내역과 소감을 담아주시면 좋을 것 같아요. 엽토가 어떤 것에 더 신경썻는지 알면 저도 그것에 맞춰서 리뷰를 줄 수 있을 것 같고, 첫 미션이 어땠는지 소감도 궁금하네요 :)
    또 README에 내용이 없는경우 저는 package.json을 보는 편인데요, package.json은 이 프로젝트에 어떤 라이브러리 의존성이 있고, 어떻게 시행되고 등등의 많은 정보를 담고 있기 때문이죠. 그 부분에 대한 수정이 아에 존재하지 않는데 한번 공부를 해보시면 어떨까요?

  2. 노드 패키지의 lock 파일이 2개 있던데.. 어떤걸 사용하시는 걸까요 :) 불필요한 파일은 삭제해주세요

  3. 클래스
    모든 것을 클래스로 만드셨는데 특별한 이유가 있을까요? 또 static만 있는 클래스란 어떤 의미를 가지는 걸까요?

.prettierrc.js Outdated Show resolved Hide resolved
.eslintrc.js Outdated Show resolved Hide resolved
@@ -0,0 +1,12 @@
{

Choose a reason for hiding this comment

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

페어와 setting을 맞추기 위한 것일까요? 그런 의도라면 굳..

Copy link
Author

Choose a reason for hiding this comment

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

lint 설정을 했는데 잘 되지 않았어요.. 혹시 몰라 제 작업 디렉토리에 settings.json을 만들어보니 됐습니다. gitignore한다는 걸 깜빡한 것 같습니다!

@@ -0,0 +1,16 @@
const Car = require('../src/Models/Car');

test('Car Class 테스트', () => {

Choose a reason for hiding this comment

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

Car class의 어떤걸 테스트하신걸까요? 좀 더 친절한 설명이 있으면 좋을 것 같아요

Copy link
Author

Choose a reason for hiding this comment

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

테스트 설명이 너무 부족했던 것 같습니다!!

src/Constant/Constants.js Show resolved Hide resolved
}

static print(message) {
console.log(message);

Choose a reason for hiding this comment

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

에러 상황에서 정의해둔 에러메세지(영어)가 콘솔에 찍히지 않고 있네용 :)

Copy link
Author

Choose a reason for hiding this comment

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

Console.print() 메서드는 message를 인자로 받아 출력만 해주는 메서드입니다! 혹시 에러메세지가 콘솔에 찍히지 않는다는 것이 무슨 말씀인지 다시 한번 설명해주실 수 있을까요?

});
}

handleRace(count) {

Choose a reason for hiding this comment

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

너무 포괄적인 네이밍같아요. Race를 핸들한다는 건 어떤 의미일까요?

Copy link
Author

Choose a reason for hiding this comment

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

레이스하고 결과를 보여준다라는 것을 포괄적으로 변수명을 지어줬네요. 한 메서드에 두가지의 행위가 있는 것 같아서 분리를 해주고 싶었는데, 한번 진행 시 한번 출력해주어야하는데 분리하면 어떻게 해야할지 생각나지 않았습니다.

this.getCarName();
}

getCarName() {

Choose a reason for hiding this comment

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

getter여야 하는 이유는 무엇인가요?

);

test.each([[' '], ['!'], [' '], ['123'], ['한123']])(
'자동차 이름이 한글이나 영문이 아닌 경우 예외처리한다.',

Choose a reason for hiding this comment

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

한글로만 한 이유가 궁금해요. 한글로만 하려면 사용자에게 미리 알려야하지 않을까요?
예를들어
한글로만 이루어진 이름을 입력해주세요. (ex. 갑,을)

Copy link
Author

Choose a reason for hiding this comment

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

예시에 'pobi,crong,honux'라고 되어있었는데요, 1차원적으로 사람이름이 들어와야한다고 생각을 했어요. 지금 생각해보니 결국 자동차 이름일텐데 제가 만들어버린 필요없는 예외란 생각이 드네요. 예를들어 bmw 520d 처럼 테스트 입력값에서 '한123'은 굳이 에러를 던질 필요가 없을 것 같습니다. 제가 요구사항을 잘못 파악했네요ㅠ

__tests__/Validator.test.js Outdated Show resolved Hide resolved
@devhyun637 devhyun637 self-assigned this Feb 10, 2023
@devhyun637
Copy link

엽토! 리뷰중에서 우선적으로 아래 코멘트부터 봐주시고, 나머지는 Step2에서 진행하겠습니다~

#167 (comment)
#167 (comment)
#167 (comment)
#167 (comment)
#167 (comment)
#167 (comment)
#167 (comment)
#167 (comment)

@yeopto
Copy link
Author

yeopto commented Feb 10, 2023

티케! 우선적으로 봐달라고 하신 코멘트들 중 제가 이해를 하지 못한 것을 제외하고 코드에 반영했습니다! Step2에선 나머지 코멘트와 제가 리팩터링하고 싶은 부분들을 수정하여 PR메시지에 잘 반영해보겠습니다!

};

Choose a reason for hiding this comment

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

EOL을 수동으로 처리하는 것 외에 자동화할 수 있는 방법은 뭐가 있을지 고민해보면 좋을 것 같아요~

Copy link
Author

Choose a reason for hiding this comment

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

prettier 설정으로 endOfLine을 'auto'로 해주었습니다. 이것도 수동으로 보아야할까요?

Copy link

@devhyun637 devhyun637 left a comment

Choose a reason for hiding this comment

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

다음부터는 적용한 부분에 대해서 정리하거나, 아니면 이모지로 엽토만의 표시를 리뷰 코멘트에 남겨주면 리뷰어입장에서 보기 좋을 것 같아요 :)
꼭 이렇게 하라는 건 아니지만, 이런 아주 좋은 예시도 있다~ 정도 봐주시면 좋을 것 같아요. (이모지 혹은 댓글만으로도 충분합니다)
스크린샷 2023-02-10 오후 8 09 39스크린샷 2023-02-10 오후 8 10 08스크린샷 2023-02-10 오후 8 10 24

노드 패키지의 lock 파일이 2개 있던데.. 어떤걸 사용하시는 걸까요 :) 불필요한 파일은 삭제해주세요

위 리뷰만 완료되면 Step1은 머지하겠습니다.

적용해주신 부분들 중, 다시 코멘트를 남겼는데 엽토의 리뷰적용 속도가 빨라서 한번 더 request-changes를 보내요!
당연히 Step2에 가서 적용해주셔도 됩니다. 노드패키지 관련 피드백이 마무리 되면 Step2에서 코드리뷰 적용하며 리팩토링을 할지 아니면 Step1에서 한번 더 저랑 핑퐁을 할지 결정해주시면 됩니다~

@@ -1,6 +1,6 @@
const Car = require('../src/Models/Car');

test('Car Class 테스트', () => {
test('Car Class move 메서드 테스트', () => {

Choose a reason for hiding this comment

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

test는 동작을 설명해주는 게 좋지 않을까요?

src/Constant/Constants.js Show resolved Hide resolved
@@ -12,6 +12,6 @@

- [x] 시도횟수가 1이상의 숫자가 아닐 경우 예외처리한다.
- [x] 이름이 다섯자 이하가 아닐 경우 예외처리한다.
- [x] 이름에 한글이나 영문이 아닐 경우 예외처리한다.
- [x] 이름에 숫자만 있거나 이름이 문자라면 예외처리한다.

Choose a reason for hiding this comment

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

이름이 문자라면 왜 예외처리를 하시나요..!

});
}

handleRaceAndShowResult(count) {

Choose a reason for hiding this comment

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

네이밍에서 벌써 느껴지는 두가지 역할을 하는 함수 🤔

lock 파일이 두개가 생성되어 yarn.lock을 지우다
이름에 숫자만 있거나 이름이 특수문자라면 예외처리한다로 수정하다
@yeopto
Copy link
Author

yeopto commented Feb 10, 2023

코멘트 하나씩 보면서 해결한 것은 리코멘트남기고 잘 이해하지 못했다하는 것은 이해하지 못해서 질문 드린다고 리코멘트를 남기면 되는줄 알았습니다. 처음 코드리뷰를 해봐서 많이 서툴렀던 것 같습니다. 무엇을 반영했는지 정확히 말씀을 드렸어야했는데.. 정말 죄송합니다!!! lock 파일이 두개인 이유는 오늘 공통 피드백 시간에 공원이 미션 처음 만들때 깜빡하고 yarn lock 파일을 올리신 것 같더라구요! 리뷰어 분들께 말씀드리라고 했었습니다! 그래서 yarn.lock을 지우고 반영했습니다!

1단계 피드백 반영 목록

  • pakage-lock.json 과 yarn.lock 두개가 존재하여 yarn.lock을 삭제하다. 관련커밋
  • EOL 자동으로 처리하기 위해 prettier 설정하다. 관련커밋, 관련커밋
  • 쉼표, 콜론등 변하지 않는 값을 상수화하지 않다. 관련커밋
  • 영문, 한글만이 아닌 '테스트123'처럼 숫자도 함께 사용할 수 있도록 자동차 이름 예외처리를 수정하다. (테스트 input 값도 함께 수정) 관련커밋
  • docs에 잘못된 예외처리 내용을 수정하다. (문자 -> 특수문자) 관련커밋

1단계 재리뷰요청 후 반영 목록

  • Car Class의 move 메서드 테스트 코드 설명을 수정하다. 관련커밋
  • prettier printhWidth 값을 변경하다. 관련커밋
  • Console Error Message를 변경하다. -> Console Error가 영문이었던 이유는 프리코스에서 Console Util을 모듈로 관리해주었는데 원래쓰던걸 가져만 오고 한글로 변경하지 않았던 것 같습니다..😓 관련커밋

Step 2에서 남은 피드백들을 꼼꼼히 확인하여 리팩토링 하도록 하겠습니다. 리뷰요청 두번이나 불편하게 해드린 점 정말 죄송합니다.. 그리고 꼼꼼한 피드백 주셔서 정말 감사합니다!

80은 defalut값이기도 하면서 요즘은 브라우저가 넓어서 오히려 좁을 수 있다
일관성이 있도록 한글로 변경하다
@devhyun637
Copy link

처음 코드리뷰를 해봐서 많이 서툴렀던 것 같습니다. 무엇을 반영했는지 정확히 말씀을 드렸어야했는데.. 정말 죄송합니다!!!

전~~혀 아니에요! 죄송할 일 아니고, 이렇게 정리를 해두면 당장 낼모레 엽토가 작업을 할때라도 도움이 되어서 알려드린 팁이에요!
그리고 다른 리뷰어들을 배정받았을때도 빠르게 리뷰를 주고받을 수 있는 저만의(?) 팁이라고 공유하고 싶었습니다!

리뷰요청 두번이나 불편하게 해드린 점 정말 죄송합니다

자동차 미션은 일주일이라서 빠르게 2단계로 넘어가야하는 부분이 있지만, 피드백 반영이 빨라서 리뷰요청을 한번 더 드린거랍니다~ 죄송할 일이 정말 아니고! 리뷰는 원래 두번정도 주고받아요 :) 피드백 반영 빠르게 잘 해주셔서 감사합니다~ 수고하셨어요!

@devhyun637 devhyun637 merged commit 52dfb46 into woowacourse:yeopto Feb 11, 2023
@yeopto
Copy link
Author

yeopto commented Feb 11, 2023

넵 알겠습니다!! 티케도 수고많으셨어요! 2단계에서 다시 뵙겠습니다 😀

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