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

3단계 - 사다리(게임 실행), 2단계 - 사다리(생성) 수정 #2281

Merged
merged 27 commits into from
Dec 1, 2024

Conversation

mitsui3point
Copy link

안녕하세요 리뷰어님,
기한을 더 주셨는데도 막바지에 리뷰요청을 드립니다.

감사합니다.

- X 생성
- 0보다 작으면 오류
- Y 생성
- 0보다 작으면 오류

feat(ladder): create X

feat(ladder): create Y
- X 이동
- X 우로 이동
- X 좌로 이동
- X 좌로 이동 실패 0보다 작음

feat(ladder): add X moveRight, moveLeft method

test(ladder): add 오른쪽으로 이동한다, 왼쪽으로 이동한다, 왼쪽으로 이동 실패: 0미만
- Y 이동
- Y 아래로 이동

feat(ladder): add Y moveDown

test(ladder): add Y 아래로 이동한다
- Position 생성
- Position 이동

feat(ladder): add Position, constructor, move method

test(ladder): add Position create, move test methods
- PlayerName 이름이 all 일 수 없다

feat(ladder): rename Name -> PlayerName

test(ladder): add PlayerName create_키워드_all_실패 test method
- Player 생성
- Player 이름을 출력한다

feat(ladder): add Player constructor, name method

test(ladder): add PlayerTest create, name

feat(ladder): modify PlayerName name() -> value()
- RewardName 생성

feat(ladder): add RewardName constructor, value

test(ladder): add RewardName create, value
- Reward 생성
- Reward 이름을 출력한다
- Reward Position 동등 비교
- Player 포지션을 출력한다

feat(ladder): add Reward constructor, name, isEqualPosition

test(ladder): add RewardTest create, name, isEqualPosition

feat(ladder): add Player position

test(ladder): add PlayerTest position
test(ladder): modify PlayersTest create

feat(ladder): modify Player name return type String -> PlayerName

test(ladder): modify PlayerTest name
- Rewards 생성
- Rewards 게임결과를 도출한다
- Rewards 게임결과들을 도출한다
- Result 생성
- Result 플레이어의 결과인지 출력
- Result RewardName 출력
- Result PlayerName 출력
- Results 생성
- Results 결과목록 출력

feat(ladder): add Result

test(ladder): add ResultTest

feat(ladder): add Results

test(ladder): add ResultsTest

feat(ladder): add Rewards

test(ladder): add RewardsTest

feat(ladder): add Players each method

test(ladder): add PlayersTest each method

feat(ladder): add Reward

test(ladder): add RewardsTest
- modify Reward position x 동등 비교
- modify Reward field Position -> X
- add Player 가로 일치 여부를 출력한다

feat(ladder): modify Reward constructor, field Position -> X

test(ladder): modify RewardTest

feat(ladder): modify Rewards constructor

test(ladder): modify RewardsTest

feat(ladder): add Position xEquals

test(ladder): add PositionTest xEquals
- Players 플레이어 모두 한칸 아래 이동
- Point 이동

feat(ladder): add Players moveLine

test(ladder): add PlayersTest moveLine

feat(ladder): add Point move

test(ladder): add PointTest move
- Line 플레이어 모두 한칸 아래 이동

feat(ladder): remove Players moveLine

test(ladder): remove PlayersTest moveLine

feat(ladder): add Line move

test(ladder): add LineTest move

feat(ladder): add Vertical

test(ladder): add VerticalTest

feat(ladder): add Players vertical

test(ladder): add PlayersTest vertical
- Lines 플레이어 모두 마지막까지 이동

feat(ladder): remove Players moveLine

feat(ladder): add Lines move

test(ladder): add LinesTest move
- PlayerName 생성
- RewardName 생성

feat(ladder): add RewardName

test(ladder): add RewardNameTest
- Ladder 결과들을 생성한다
- Rewards 이름을 출력한다
- Results 생성
- Results 게임결과를 도출한다
- Results 게임결과들을 도출한다

feat(ladder): add Ladder results

test(ladder): add LadderTest results

feat(ladder): add Rewards names

test(ladder): add RewardsTest names

feat(ladder): add Results

test(ladder): add ResultsTest
- modify unused Exceptions

test(ladder): modify omitted @DisplayName
- Rewards 생성 실패
- Players 생성 실패
- Vertical 생성 실패
- InputView 실행 결과를 입력받는다.(실행 결과를 입력하세요. (결과는 쉼표(,)로 구분하세요))
- InputView 결과를 볼 플레이어 이름을 입력받는다.(결과를 보고 싶은 사람은?)
- InputView 결과를 볼 플레이어 전체를(all) 입력받는다.(결과를 보고 싶은 사람은?)
- ResultView 사다리결과에 Rewards 를 붙여 출력한다
- ResultView 실행 결과를 출력한다(실행 결과)
- ResultView 실행 결과들을 출력한다(실행 결과)

feat(ladder): add InputView inputNamesToRewards, inputResultPlayer

feat(ladder): add ResultView renderResults
- modify ResultView renderLadderAndRewards, toLadder

feat(ladder): modify LadderController run

feat(ladder): modify Players constructor

test(ladder): modify PlayersTest create_실패_플레이어_목록이_1명_미만

feat(ladder): modify Rewards constructor

test(ladder): modify RewardsTest create_실패_rewardNames_갯수와_playersCount_갯수_불일치

feat(ladder): modify Vertical constructor

test(ladder): modify VerticalTest create_실패_0보다_작을_수_없다
Copy link
Contributor

@javajigi javajigi left a comment

Choose a reason for hiding this comment

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

사다리타기 3단계 구현 넘 깔끔하게 잘 했네요. 💯
객체 설계, 클린 코드 구현, 테스트 코드 구현 등 여러 측면에서 잘 구현한 코드네요.
테스트 코드에 초기화하는 값이 많아 피드백 남겼어요.
이번 기회에 한번 고민해 보는 시간이 되면 좋겠습니다.

return Collections.unmodifiableList(lines);
}

public Players move(Players players) {
Copy link
Contributor

Choose a reason for hiding this comment

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

👍

@@ -4,7 +4,7 @@

import java.util.Objects;

public class Name {
public abstract class Name {
Copy link
Contributor

Choose a reason for hiding this comment

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

추상 메서드도 없는데 굳이 추상 클래스로 구현한 이유는?

@@ -1,56 +1,67 @@
package ladder.domain;

import ladder.domain.enums.MoveStatus;
import ladder.exception.PointException;

import java.util.Objects;

public class Point {
Copy link
Contributor

Choose a reason for hiding this comment

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

이 같이 작은 단위의 객체 추가하기 쉽지 않았을텐데 👍

Comment on lines 18 to +27
private Players players;
private PlayerName playerName1;
private PlayerName playerName2;
private PlayerName playerName3;
private PlayerName playerName4;

private Point firstPoint;
private Point next1Point;
private Point next2Point;
private Point lastPoint;
Copy link
Contributor

Choose a reason for hiding this comment

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

테스트 코드에 전반적으로 인스턴스 변수가 많다.
초기화하는 인스턴스 변수가 많으면 테스트 코드를 읽는 사람 입장에서 테스트 코드의 의도를 파악하기 힘들지 않을까?
약간의 중복은 있더라도 테스트 코드의 setUp에서 초기화하는 값의 수를 최소화해보면 어떨까?

@javajigi javajigi merged commit a651e56 into next-step:mitsui3point Dec 1, 2024
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