우아한테크코스 4기/코드리뷰

[1주차] 자동차 구현

giron 2022. 2. 26. 20:12
728x90

서론

우아한테크코스를 진행하면서 강의도 도움이 되고 좋았지만 코드 리뷰 또한 몰랐던 내용을 알게 되고, 바로 접목시켜볼 수 있어서 좋았다.

코드 리뷰를 받으면서 배운 점이 많기 때문에 블로그에 글을 작성하면서 정리하기 좋다고 생각되어 우테코를 진행하면서 받은 코드 리뷰들을 정리할 생각이다.

 

자동차 구현

프리코스때 진행했던 내용과 같지만 페어프로그래밍을 하면서 진행하다 보니 어렵게 느껴졌다. 처음으로 페어프로그래밍을 하면서 (+ TDD) 어색했지만 나의 첫 페어이자 성격좋은 조시덕분에 큰 갈등 없이 무난하게 처리했다.

 

랜덤 매서드 테스트

항상 궁금했던 랜덤 매서드 테스트! 방법은 크게 2가지로 나뉠 수 있다.

1. 랜덤한 값을 매개변수로 받도록 구현(의존 관계를 상위로 옮김으로써 응집도가 낮아진다.)

2. 전략패턴을 사용한 인터페이스 분리 구현

나는 우선 1번 방식으로 작성했다. 인터페이스를 이용한 방법은 

랜덤한 숫자에 따른 이동 여부 매서드

2번 방식: https://tecoble.techcourse.co.kr/post/2020-05-17-appropriate_method_for_test_by_interface/

private 매서드 테스트

두서없이 질문해도 잘 들어주신 제이!

수업 중에 관련 문제를 다루면서 구구가 좋은 답변을 해주셨다!

public 메서드를 잘 활용해서 private 메서드를 테스트할 수 있습니다.

처음에는 이야기를 듣고 잘.. 활용...어떻게 잘 활용하는 건가 생각을 했다. 그러다 제이의 리뷰를 보고 private 매서드를 테스트할 수 없다면 기존의 코드를 뒤죽박죽 섞어서 해결하지 말고 구조를 바꾸면 가능하다는 것을 깨달았다!!

 

다른 방법으로 private 매서드를 테스트하고 싶다면 방법이 하나 있다. : http://shoulditestprivatemethods.com

 

Should I Test Private Methods?

 

shoulditestprivatemethods.com

인터페이스로 선언하자

구체타입이 아닌 인터페이스로 선언을 하자!

  1. 다형성을 보장할 수 있다.
  2. 결합도를 낮출수 있다.

작성하면서도 먼가 이상하다 했다..

최악으로 적었다. 다형성은 고려하지 않고 아마 시간이 촉박해서 빠르게 코딩하다 보니 그랬던 것 같다..😅😅

List<RacingCar> winners = getWinners();

 

1주차 진행 PR

 

[1단계 - 자동차 경주 구현] 기론(김규철) 미션 제출합니다. by Gyuchool · Pull Request #317 · woowacourse/ja

안녕하세요! 4기 기론입니다! TDD를 처음으로 접하고 사용하면서 헷갈리는 부분들이 조금 있었습니다. 궁금한 부분에 답변해주시면 감사하겠습니다!! 첫 PR까지 시간이 부족해서 완성도가 아직

github.com

 

[2단계 - 자동차 경주 리팩터링] 기론(김규철) 미션 제출합니다. by Gyuchool · Pull Request #362 · woowacou

안녕하세요 제이! 다시 뵙게 되어서 반갑습니당😀 이번 미션도 잘 부탁드리겠습니다. MVC 리펙토링 mvc패턴에서는 controller에서 view를 통해 받아야 하므로 Application을 통해 받던 InputView, OutputView를

github.com

 

 

728x90