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

[step5] 자동차 경주 리팩토링 #1562

Open
wants to merge 2 commits into
base: dding94
Choose a base branch
from

Conversation

dding94
Copy link

@dding94 dding94 commented Nov 23, 2023

안녕하세요 리뷰어님.

엄청 많이 늦어졌네요 하하...
step4 에서 말씀해주신 코드리뷰 토대로 리팩토링을 진행해봤습니다.

이번 미션동안 코드리뷰 꼼꼼하게 해주셔서 감사합니다.
미션 진행하면서 점점 발전해가는 느낌을 좀 느꼈습니다!

해당 미션도 많은 피드백 부탁드리겠습니다!

Copy link
Member

@malibinYun malibinYun left a comment

Choose a reason for hiding this comment

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

리뷰가 늦어져 죄송합니다 😢
5단계 미션 고생 많으셨어요!
이번 단계 미션의 요구사항을 이미 잘 충족하셔서, 크게 피드백 드릴 부분이 없었네요!
미션을 이만 마무리 짓고 싶으시다면 DM이나 코멘트 남겨주시고,
시도해보고 싶으신 부분들이 있으시다면 반영 후 리뷰 요청 해주세요!

Comment on lines +16 to +17
val cars = racingGame.run(attemptNumber, carNames)
val racingHistory = cars.getRacingHistory()
Copy link
Member

Choose a reason for hiding this comment

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

racingGame.run() 을 호출했을 때, cars를 받아올 수도 있겠지만 바로 racingHistory를 반환해봐도 좋겠네요!
레이싱 결과를 모두 담은 객체를 만들어보는 것도 선택해볼 수 있겠어요 :)

Comment on lines +22 to +24
fun copy(): Car {
return Car(name, moveCount)
}
Copy link
Member

Choose a reason for hiding this comment

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

Car는 가변 객체인데, copy를 꼭 해야할까요?
History 객체를 만들어낼 때는 Car를 직접 갖게 해볼 수도 있지만, Car가 갖고 있는 값만을 꺼내와서 저장해도 좋아보여요 :)

History객체에서 Car 객체를 직접 갖게해보려면, Car는 불변객체로 만들어보는 건 어떨까요?

Comment on lines +23 to +25
fun getRacingHistory(): RacingHistory {
return racingHistory
}
Copy link
Member

Choose a reason for hiding this comment

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

멤버변수인 racingHistory를 공개하면 getter를 따로 만들지 않아도 되겠네요 :)

Comment on lines +4 to +5
private val rounds: MutableList<List<Car>> = mutableListOf()
) {
Copy link
Member

Choose a reason for hiding this comment

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

컬렉션이 이중 삼중 겹쳐있는 것은 어떤 것을 저장할 지 의미를 녹여내기는 어려워보여요.
먼저 안쪽의 컬렉션을 일급 컬렉션으로 묶어보는 건 어떨까요?

Comment on lines 19 to 34
val movingCarNames = listOf("T1")
val stopCarNames = listOf("S1", "S2")
val attemptNumber = 5

val movingCars = Cars(movingCarNames.map { Car(it) }, AlwaysMoveStrategy())
val stopCars = Cars(stopCarNames.map { Car(it) }, NeverMoveStrategy())

repeat(5) {
movingCars.moveCars()
stopCars.moveCars()
}
movingCars.moveCars(attemptNumber)
stopCars.moveCars(attemptNumber)

val allCars = Cars(movingCars.getCars() + stopCars.getCars())
val allCars = Cars(movingCars.cars + stopCars.cars)

val winners = allCars.getWinners()

winners.size shouldBe movingCars.getCars().size
winners.size shouldBe movingCars.cars.size
winners.map { it.name } shouldContainExactly movingCarNames
Copy link
Member

Choose a reason for hiding this comment

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

#1506 (comment) 여전히 유효한 피드백이에요 :)
Cars객체를 직접 실행해서 값을 초기화 하기 보다, 이미 초기 값을 가진 자동차를 생성해서 초기화해보는 건 어떨까요?
검증하고자 하는 메서드는 allCars.getWinners() 이니, 이 테스트에서 최대한 Cars 객체의 다른 메서드의 의존관계를 떼어내볼 수 있겠어요 :)

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