Skip to content

Step3 - 볼링 점수판(리팩토링) 리뷰 요청드립니다. #44

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

Merged
merged 6 commits into from
Jul 26, 2019
4 changes: 2 additions & 2 deletions src/main/java/domain/BowlingGame.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ public String getPlayerName() {
return player.getName();
}

public List<Frame> getFrames() {
return frames.getFrames();
public Frame getFirstFrame() {
return frames.getFirstFrame();
}

public FrameResults getFrameResults() {
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/domain/Pins.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ public class Pins {
static final String ALERT_OUT_OF_PINS_RANGE = "쓰러진 핀의 개수는 최소 0개에서 최대 10개 입니다.";
public static final int STRIKE_PINS = 10;
public static final int GUTTER_PINS = 0;
public static final Pins STRIKE = Pins.from(STRIKE_PINS);
public static final Pins GUTTER = Pins.from(GUTTER_PINS);
Copy link
Contributor

Choose a reason for hiding this comment

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

저는 이런 상수 값들이 지금과 같이 의존관계가 높은 Pins와 같은 객체에 있는 것이 더 좋다고 생각해요.


private final int fallenPins;

Expand Down
26 changes: 23 additions & 3 deletions src/main/java/domain/Score.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package domain;

import domain.frame.FrameResult;

import java.util.Objects;

import static domain.frame.FrameResult.UNFINISHED_SCORE;
import static domain.Pins.STRIKE_PINS;

public class Score {
private static final int DEFAULT_SCORE = 0;
public static final int UNFINISHED_SCORE = -1;

private int score;
private int remainingAddition;
Expand All @@ -20,6 +20,26 @@ public static Score of(int score, int remainingAddition) {
return new Score(score, remainingAddition);
}

public static Score ofDefault() {
return new Score(DEFAULT_SCORE, 0);
}

public static Score ofUnfinished() {
return new Score(UNFINISHED_SCORE, 0);
}

public static Score ofMiss(int sumOfPins) {
return new Score(sumOfPins, 0);
}

public static Score ofSpare() {
return new Score(STRIKE_PINS, 1);
}

public static Score ofStrike() {
return new Score(STRIKE_PINS, 2);
}
Copy link
Contributor

Choose a reason for hiding this comment

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

이와 같은 정적 팩토리 메소드 또한 api를 사용하는 입장에서는 유용한 메소드라 생각해요. 👍


public Score update(int newScore) {
if (isFullyCalculated() || isUnfinishedScore(newScore)) {
return this;
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/domain/frame/FinalFrame.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public FrameIndex getIndex() {

@Override
public State getState() {
return new FinalState(states, bowlOrder);
return FinalState.of(states, bowlOrder);
}

@Override
Expand All @@ -78,17 +78,17 @@ public boolean isSameFrame(Frame targetFrame) {

@Override
public Score getScore() {
return new FinalState(states, bowlOrder).getScore();
return getState().getScore();
}

@Override
public Score updateScore(Score score) {
return new FinalState(states, bowlOrder).updateScore(score);
return getState().updateScore(score);
}

@Override
public FrameResult getResult() {
return FrameResult.of(new FinalState(states, bowlOrder), getScore());
return FrameResult.of(getState(), getScore());
}

}
6 changes: 3 additions & 3 deletions src/main/java/domain/frame/FrameIndex.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ public class FrameIndex {
static final String ALERT_INVALID_FRAME_NUMBER = "프레임 번호는 1부터 10까지만 허용됩니다.";
static final int MINIMUM_FRAME_INDEX = 1;
public static final int MAXIMUM_FRAME_INDEX = 10;
static final int SECOND_TO_LAST_INDEX = 9;
static final int INCREMENT_AMOUNT = 1;
private static final int SECOND_TO_LAST_INDEX = 9;
private static final int INCREMENT_AMOUNT = 1;

private int frameIndex;

Expand All @@ -33,7 +33,7 @@ boolean isSameIndex(Frame targetFrame) {
}

private void validationFrameNumber(int frameNumber) {
if (frameNumber < MINIMUM_FRAME_INDEX || frameNumber > MAXIMUM_FRAME_INDEX) {
if ((frameNumber < MINIMUM_FRAME_INDEX) || (frameNumber > MAXIMUM_FRAME_INDEX)) {
throw new IllegalArgumentException(ALERT_INVALID_FRAME_NUMBER);
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/domain/frame/FrameResult.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
import domain.Score;
import domain.state.State;

import static domain.Score.UNFINISHED_SCORE;

public class FrameResult {
public static final int UNFINISHED_SCORE = -1;

private String state;
private int score;
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/domain/frame/FrameResults.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import java.util.List;
import java.util.stream.Collectors;

import static domain.frame.FrameResult.UNFINISHED_SCORE;
import static domain.Score.UNFINISHED_SCORE;

public class FrameResults {

Expand Down
4 changes: 4 additions & 0 deletions src/main/java/domain/frame/Frames.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,4 +61,8 @@ public FrameResults getResults() {
.map(Frame::getResult)
.collect(Collectors.toList()));
}

public Frame getFirstFrame() {
return frames.get(0);
}
}
3 changes: 1 addition & 2 deletions src/main/java/domain/frame/NormalFrame.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import domain.state.State;

import static domain.frame.FrameIndex.MINIMUM_FRAME_INDEX;
import static domain.frame.FrameResult.UNFINISHED_SCORE;

public class NormalFrame implements Frame {

Expand Down Expand Up @@ -80,7 +79,7 @@ public Score updateScore(Score score) {
return updatedScore;
}
if (nextFrame == null) {
return Score.of(UNFINISHED_SCORE, 0);
return Score.ofUnfinished();
}
return nextFrame.updateScore(updatedScore);
}
Expand Down
8 changes: 0 additions & 8 deletions src/main/java/domain/state/ClosedFrameException.java

This file was deleted.

33 changes: 0 additions & 33 deletions src/main/java/domain/state/FinalState.java

This file was deleted.

35 changes: 0 additions & 35 deletions src/main/java/domain/state/Hit.java

This file was deleted.

42 changes: 0 additions & 42 deletions src/main/java/domain/state/Miss.java

This file was deleted.

40 changes: 0 additions & 40 deletions src/main/java/domain/state/Spare.java

This file was deleted.

25 changes: 0 additions & 25 deletions src/main/java/domain/state/StandBy.java

This file was deleted.

22 changes: 0 additions & 22 deletions src/main/java/domain/state/Strike.java

This file was deleted.

Loading