Skip to content

Commit f6e5940

Browse files
Integerousjavajigi
authored andcommitted
Step3 - 볼링 점수판(리팩토링) 리뷰 요청드립니다. (#44)
* [step3] refactor : 브랜칭을 잘못하여 삭제되지 않은 step1의 클래스들 삭제 * [step3] refactor : List<Frame>을 Getter로 노출하지 않도록 수정 * [step3] refactor : Score 각 상태에 따른 팩토리 메서드 추가 * [step3] refactor : 추가된 Score 팩토리 메서드를 테스트 코드에 적용 * [step3] refactor : 자주 사용되는 Pins의 정적 팩토리 메서드 생성 * [step3] refactor : 호출될 때마다 인스턴스를 새로 만들지 않도록 FinalState 정적 팩토리 메서드 생성
1 parent 80abe23 commit f6e5940

34 files changed

+98
-442
lines changed

src/main/java/domain/BowlingGame.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ public String getPlayerName() {
3939
return player.getName();
4040
}
4141

42-
public List<Frame> getFrames() {
43-
return frames.getFrames();
42+
public Frame getFirstFrame() {
43+
return frames.getFirstFrame();
4444
}
4545

4646
public FrameResults getFrameResults() {

src/main/java/domain/Pins.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ public class Pins {
66
static final String ALERT_OUT_OF_PINS_RANGE = "쓰러진 핀의 개수는 최소 0개에서 최대 10개 입니다.";
77
public static final int STRIKE_PINS = 10;
88
public static final int GUTTER_PINS = 0;
9+
public static final Pins STRIKE = Pins.from(STRIKE_PINS);
10+
public static final Pins GUTTER = Pins.from(GUTTER_PINS);
911

1012
private final int fallenPins;
1113

src/main/java/domain/Score.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package domain;
22

3-
import domain.frame.FrameResult;
4-
53
import java.util.Objects;
64

7-
import static domain.frame.FrameResult.UNFINISHED_SCORE;
5+
import static domain.Pins.STRIKE_PINS;
86

97
public class Score {
8+
private static final int DEFAULT_SCORE = 0;
9+
public static final int UNFINISHED_SCORE = -1;
1010

1111
private int score;
1212
private int remainingAddition;
@@ -20,6 +20,26 @@ public static Score of(int score, int remainingAddition) {
2020
return new Score(score, remainingAddition);
2121
}
2222

23+
public static Score ofDefault() {
24+
return new Score(DEFAULT_SCORE, 0);
25+
}
26+
27+
public static Score ofUnfinished() {
28+
return new Score(UNFINISHED_SCORE, 0);
29+
}
30+
31+
public static Score ofMiss(int sumOfPins) {
32+
return new Score(sumOfPins, 0);
33+
}
34+
35+
public static Score ofSpare() {
36+
return new Score(STRIKE_PINS, 1);
37+
}
38+
39+
public static Score ofStrike() {
40+
return new Score(STRIKE_PINS, 2);
41+
}
42+
2343
public Score update(int newScore) {
2444
if (isFullyCalculated() || isUnfinishedScore(newScore)) {
2545
return this;

src/main/java/domain/frame/FinalFrame.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public FrameIndex getIndex() {
6868

6969
@Override
7070
public State getState() {
71-
return new FinalState(states, bowlOrder);
71+
return FinalState.of(states, bowlOrder);
7272
}
7373

7474
@Override
@@ -78,17 +78,17 @@ public boolean isSameFrame(Frame targetFrame) {
7878

7979
@Override
8080
public Score getScore() {
81-
return new FinalState(states, bowlOrder).getScore();
81+
return getState().getScore();
8282
}
8383

8484
@Override
8585
public Score updateScore(Score score) {
86-
return new FinalState(states, bowlOrder).updateScore(score);
86+
return getState().updateScore(score);
8787
}
8888

8989
@Override
9090
public FrameResult getResult() {
91-
return FrameResult.of(new FinalState(states, bowlOrder), getScore());
91+
return FrameResult.of(getState(), getScore());
9292
}
9393

9494
}

src/main/java/domain/frame/FrameIndex.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ public class FrameIndex {
66
static final String ALERT_INVALID_FRAME_NUMBER = "프레임 번호는 1부터 10까지만 허용됩니다.";
77
static final int MINIMUM_FRAME_INDEX = 1;
88
public static final int MAXIMUM_FRAME_INDEX = 10;
9-
static final int SECOND_TO_LAST_INDEX = 9;
10-
static final int INCREMENT_AMOUNT = 1;
9+
private static final int SECOND_TO_LAST_INDEX = 9;
10+
private static final int INCREMENT_AMOUNT = 1;
1111

1212
private int frameIndex;
1313

@@ -33,7 +33,7 @@ boolean isSameIndex(Frame targetFrame) {
3333
}
3434

3535
private void validationFrameNumber(int frameNumber) {
36-
if (frameNumber < MINIMUM_FRAME_INDEX || frameNumber > MAXIMUM_FRAME_INDEX) {
36+
if ((frameNumber < MINIMUM_FRAME_INDEX) || (frameNumber > MAXIMUM_FRAME_INDEX)) {
3737
throw new IllegalArgumentException(ALERT_INVALID_FRAME_NUMBER);
3838
}
3939
}

src/main/java/domain/frame/FrameResult.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
import domain.Score;
44
import domain.state.State;
55

6+
import static domain.Score.UNFINISHED_SCORE;
7+
68
public class FrameResult {
7-
public static final int UNFINISHED_SCORE = -1;
89

910
private String state;
1011
private int score;

src/main/java/domain/frame/FrameResults.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import java.util.List;
66
import java.util.stream.Collectors;
77

8-
import static domain.frame.FrameResult.UNFINISHED_SCORE;
8+
import static domain.Score.UNFINISHED_SCORE;
99

1010
public class FrameResults {
1111

src/main/java/domain/frame/Frames.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,8 @@ public FrameResults getResults() {
6161
.map(Frame::getResult)
6262
.collect(Collectors.toList()));
6363
}
64+
65+
public Frame getFirstFrame() {
66+
return frames.get(0);
67+
}
6468
}

src/main/java/domain/frame/NormalFrame.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import domain.state.State;
77

88
import static domain.frame.FrameIndex.MINIMUM_FRAME_INDEX;
9-
import static domain.frame.FrameResult.UNFINISHED_SCORE;
109

1110
public class NormalFrame implements Frame {
1211

@@ -80,7 +79,7 @@ public Score updateScore(Score score) {
8079
return updatedScore;
8180
}
8281
if (nextFrame == null) {
83-
return Score.of(UNFINISHED_SCORE, 0);
82+
return Score.ofUnfinished();
8483
}
8584
return nextFrame.updateScore(updatedScore);
8685
}

src/main/java/domain/state/ClosedFrameException.java

Lines changed: 0 additions & 8 deletions
This file was deleted.

src/main/java/domain/state/FinalState.java

Lines changed: 0 additions & 33 deletions
This file was deleted.

src/main/java/domain/state/Hit.java

Lines changed: 0 additions & 35 deletions
This file was deleted.

src/main/java/domain/state/Miss.java

Lines changed: 0 additions & 42 deletions
This file was deleted.

src/main/java/domain/state/Spare.java

Lines changed: 0 additions & 40 deletions
This file was deleted.

src/main/java/domain/state/StandBy.java

Lines changed: 0 additions & 25 deletions
This file was deleted.

src/main/java/domain/state/Strike.java

Lines changed: 0 additions & 22 deletions
This file was deleted.

0 commit comments

Comments
 (0)