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

[STEP4] 자동차 경주 (우승자) #1755

Open
wants to merge 10 commits into
base: sarahan774
Choose a base branch
from

Conversation

SaraHan774
Copy link

피드백 미리 감사드립니다!!!

Copy link

@BeokBeok BeokBeok 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 +7 to +11
init {
require(name.length <= MAX_CAR_NAME_LENGTH) {
"Car name is too long ! (max length = $MAX_CAR_NAME_LENGTH, current = ${name.length})"
}
}

Choose a reason for hiding this comment

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

init 블록을 활용한 유효성 검사 👍

Comment on lines 34 to 39
fun List<GameRound>.getMaxDistanceRecords(): List<Record> {
check(this.isNotEmpty())
val finalRecords = this.last().records
val maxDistance = finalRecords.maxOf { it.distance }
return finalRecords.filter { it.distance == maxDistance }
}

Choose a reason for hiding this comment

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

우승자를 조회하는 로직을 RacingGame 파일 내 extension으로 구현해주셨네요.
지금도 좋지만, 우승자와 관련된 책임을 갖도록 구조를 변경하여 우승자와 관련된 로직의 추가 또는 변경이 생기더라도 관련된 곳만 수정할 수 있도록 개선해보면 어떨까요?

@@ -1,13 +1,18 @@
package week1.racing.view

class InputView {
fun readStringsAndSplit(promptMessage: String, separator : String = ","): List<String> {

Choose a reason for hiding this comment

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

함수명만 보면 "문자열을 읽고 쪼갠다" 라고 이해가 되는데요.
함수는 한 가지 기능만 하도록 개선해보면 어떨까요?


class ResultView {

fun printResult(rounds: List<GameRound>) {

Choose a reason for hiding this comment

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

함수명만 보면 "결과를 출력한다" 라고 이해가 되는데요.
출력과 관련된 요구사항이 늘어날수록 이 함수는 점점 커지게 되어 두 가지 이상의 일을 하게 될 것 같습니다. 🤔
함수는 한 가지 일만 하도록 개선해보면 어떨까요?

Comment on lines 48 to 50
// winner 선정 검증
@Test
fun `{given} nonEmptyListOfCarNames & nonZeroNumberOfRounds & 항상 모든 차가 전진할 경우 {when} start() {then} getMaxDistanceRecords() 사이즈 == 총 차 대수`() {

Choose a reason for hiding this comment

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

우승자를 간단하게 확인해볼 수 있도록 개선해보면 어떨까요?
가령, RacingCar 객체를 생성하고 이 객체들 중에 누가 우승인지 판단할 수 있다면 간단해질 것 같습니다.

- InputView 의 함수 역할 쪼개기
- ResultView 의 함수 역할 쪼개기
- RacingGame 이 우승자 명단을 반환하도록 API 수정
- RacingGameTest 수정
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