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

5단계 - 자동차 경주(리팩터링) #918

Open
wants to merge 17 commits into
base: relkimm
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
41be7a3
refactor: 패키지를 domain & view 로 분리
relkimm Nov 21, 2022
32edb84
refactor: CarName 글자수 검사 시 require 사용하도록 변경
relkimm Nov 21, 2022
3392656
feat: 기존 자동차를 통해 새로운 자동차 생성하는 로직 추가
relkimm Nov 21, 2022
ffe32fd
refactor: 자동차가 주행하고 나서 새로운 자동차를 반환하도록 수정
relkimm Nov 21, 2022
ccb8ca3
refactor: CarGroup 에서 자동차가 주행하더라도 불변하도록 수정
relkimm Nov 21, 2022
28acace
refactor: Store pub/sub 구조로 변경
relkimm Nov 21, 2022
ee967ec
feat: 라운드 관련 UI 를 표시하는 RoundComponent 추가
relkimm Nov 21, 2022
51ab1c0
refactor: Winner 를 표시하는 UI container/presentational 컴포넌트로 분리
relkimm Nov 21, 2022
b31626d
refactor: Round 를 표시하는 UI container/presentational 컴포넌트로 분리
relkimm Nov 21, 2022
e8b33e2
feat: 자동차 위치를 표시하는 UI container/presentational 컴포넌트 추가
relkimm Nov 21, 2022
81e58af
refactor: 불필요한 RoundResult 정리
relkimm Nov 21, 2022
459562a
refactor: RoundList 와 Round 를 표시하는 UI 분리
relkimm Nov 21, 2022
b4497de
refactor: DistanceComponent 네이밍 변경
relkimm Nov 21, 2022
a0bb3ab
refactor: 프로퍼티에는 this 붙이도록 수정
relkimm Nov 21, 2022
6aed63f
refactor: RoundContainer 에서 라운드 시작하는 로직 render 와 분리
relkimm Nov 21, 2022
3e6350e
feat: 자동차 이름 공백인 경우 유효성 검사 추가
relkimm Nov 21, 2022
133c53c
refactor: store 공통으로 사용할 수 있도록 개선
relkimm Nov 21, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
feat: 자동차 이름 공백인 경우 유효성 검사 추가
  • Loading branch information
relkimm committed Nov 21, 2022
commit 3e6350e2b54cfeb37aa571e1851a0cb99e59db11
5 changes: 4 additions & 1 deletion src/main/kotlin/racingcar/domain/CarName.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@ package racingcar.domain
value class CarName(
val value: String,
) {
init { require(this.value.length <= MAX_NAME_LENGTH) { "자동차 이름은 5 글자를 초과할 수 없습니다." } }
init {
require(this.value.isNullOrBlank().not()) { "자동차 이름은 비어 있을 수 없습니다." }

Choose a reason for hiding this comment

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

마이너하지만 .not() 을 사용하게 되면서 가독성이 약간은 떨어지게 된 거 같아요~
아래와 같이 좀 더 간결하게 작성하는 것도 좋을 거 같습니다!

Suggested change
require(this.value.isNullOrBlank().not()) { "자동차 이름은 비어 있을 수 없습니다." }
require(this.value.isNotBlank()) { "자동차 이름은 비어 있을 수 없습니다." }

require(this.value.length <= MAX_NAME_LENGTH) { "자동차 이름은 5 글자를 초과할 수 없습니다." }
}

companion object {
private const val MAX_NAME_LENGTH = 5
Expand Down
7 changes: 7 additions & 0 deletions src/test/kotlin/racingcar/domain/CarNameTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,12 @@ class CarNameTest : FunSpec({
exception.message shouldBe "자동차 이름은 5 글자를 초과할 수 없습니다."
}
}

context("이름이 비어 있으면") {
test("IllegalArgumentException 이 발생한다.") {
val exception = assertThrows<IllegalArgumentException> { CarName(value = "") }
exception.message shouldBe "자동차 이름은 비어 있을 수 없습니다."
}
}
}
})