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

Pako 워들제출합니다. #4

Open
wants to merge 55 commits into
base: main
Choose a base branch
from
Open

Pako 워들제출합니다. #4

wants to merge 55 commits into from

Conversation

etff
Copy link

@etff etff commented Apr 16, 2022

준비준비님과 공동 작업물 분리해서 제출합니다.

SGKIM94 added 30 commits April 12, 2022 21:03
 * 추가된 명세 : hello가 답이고 llloo 라고 입력하면 GRAY, YELLO, GREEN, GRAY, GREEN 로 나와야한다
SGKIM94 and others added 25 commits April 14, 2022 21:50
- 주석내역 반영
Copy link

@pci2676 pci2676 left a comment

Choose a reason for hiding this comment

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

안녕하세요~ 제이슨 부탁으로 코드리뷰를 하게되었습니다~
commit을 따라가면서 코드리뷰 했기 때문에 이미 수정된 내용도 있어보이네요!
고민해볼만한 부분, 제가 의문이 든 부분에 코멘트 남겨두었습니다~


init {
require(value.length == WORD_SIZE && regex.matches(value)) {
throw IllegalArgumentException(WRONG_WORD_SIZE_MESSAGE)
Copy link

Choose a reason for hiding this comment

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

require은 이미 내부적으로 IllegalArgumentException를 사용해서 exception을 발생시키도록 되어있어서 message만 정의해주면 될것 같은데 이렇게 한 이유가 있을까요?

Comment on lines +30 to +36
fun `단어는 알파벳이어야한다`() {
val givenWrongWord = "a1234"
val message = assertThrows<IllegalArgumentException> {
Word(givenWrongWord)
}.message

assertThat(message).isEqualTo("5글자여야합니다")
Copy link

Choose a reason for hiding this comment

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

테스트의 목적(알파벳만 허용)과 단언문에서 확인하는 메세지(5글자)가 서로 동일한 목적으로 보이지 않는것 같습니다!

Comment on lines +20 to +21
@ValueSource(strings = ["abc", "abcdef"])
fun `단어는 5글자가 아닌 경우 예외를 던진다`(wrongWord: String) {
Copy link

Choose a reason for hiding this comment

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

5글자가 아닌 경우 예외를 확인하고 싶다면 5글자의 경계가 되는 4글자와 6글자가 더 적절할것 같네요!

Comment on lines 4 to 6
YELLOW("\uD83D\uDFE7"),
GREEN("\uD83D\uDFE9"),
GRAY("\uD83D\uDFE8");
Copy link

Choose a reason for hiding this comment

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

지금 보여주는 영역(presentation)에서는 노란색, 초록색, 회색으로 결과를 정의하고 있지만 이 부분은 ui변경에 취약하다고 볼 수 있지 않을까요? 도메인 영역이 presentation 영역에 의존적이지 않을까 라는 생각이 드는데 한번쯤 고려해보시고 이를 해결하려면 어떻게 하면 좋은지 고민해보셔도 좋을것 같습니다.

}

@Test
fun `답안과 정답의 한 단어가 위치도 다르고 스펠도 다른 경우 회색이 된다`() {
Copy link

Choose a reason for hiding this comment

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

위치가 다른것은 영향을 주지 않을것 같네요~

class Answers {

companion object {
private const val ANSWERS_TEXT_PATH = "./words.txt"
Copy link

Choose a reason for hiding this comment

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

답안은 도메인인데 외부 자원(resource)의 특정 위치를 알고 있어야 할 필요가 있을까요? 도메인 영역은 가능한 독립적으로 구현되어있는게 좋을것 같습니다.

private fun checkIsWinner(game: Game, resultTiles: Tiles, index: Int) {
if (game.isWinner(resultTiles)) {
ResultView.printGamePlayCount(index)
throw IllegalStateException("게임이 종료되었습니다.")
Copy link

Choose a reason for hiding this comment

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

정상적으로 게임이 종료되는 것을 exception으로 구현하는 것은 어색한것 같습니다.

}
}

fun getResourceText(path: String): File {
Copy link

Choose a reason for hiding this comment

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

이곳에 있어야만 하는 메서드인가요?

import wordle.domain.Results
import wordle.domain.Tile

private const val MAX_TRY_COUNT = 6
Copy link

Choose a reason for hiding this comment

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

ApplicationLAST_PLAY_COUNT와 동일한 의미이고 변경도 동일하게 이뤄질것같네요

Comment on lines +6 to +14
fun isWinner(): Boolean {
val count = tiles.count { it == Tile.GREEN }

return count == TOTAL_TILE_COUNT
}

companion object {
private const val TOTAL_TILE_COUNT = 5
}
Copy link

Choose a reason for hiding this comment

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

테스트에서는 모두 GREEN인지를 확인하고 있는데요 그렇다면 그에 맞게 코드도 변경해주는건 어떨까요? 특정 갯수보다 더 명확하게 의미를 나타내도록 코드 수정이 가능할것 같습니다.

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.

3 participants