-
Notifications
You must be signed in to change notification settings - Fork 708
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
Step2 #1856
base: hj1115hj
Are you sure you want to change the base?
Step2 #1856
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2단계 미션 잘 작성해주셨네요 👍
다만 핵심 도메인 클래스들에 대한 단위 테스트가 누락되어 있는 것 같아요 😢
몇 가지 코멘트 드렸는데 확인 후 다시 리뷰 요청을 부탁 드리겠습니다 🔥
import java.util.List; | ||
import java.util.Scanner; | ||
|
||
public class InputView { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
InputView
도 PrintvView
와 같이 정적 메서드만을 갖는 유틸리티 클래스로 만들어보면 어떨까요?
public List<String> names; | ||
public int ladderHeight = 0; | ||
|
||
public void saveInput() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- 하나의 메서드에서 참가자 이름도 입력 받고 사다리 높이도 입력을 받는 두 가지 기능을 수행하고 있는데요,
각각의 기능별로 메서드를 분리해보면 어떨까요? - 사용자로부터 입력 받는 값들을 내부에 상태로 가지기 보다는 메서드에서 바로 반환해도 충분할 것 같습니다.
|
||
import java.util.List; | ||
|
||
public class PrintView { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
정적 메서드만을 포함하는 유틸리티 클래스이니 인스턴스를 생성하지 않아도 사용이 가능합니다만,
누군가는 실수로 생성자를 호출하여 인스턴스를 생성하려고 할 수도 있으니,
private
생성자를 추가하여 불필요한 인스턴스화를 막아보면 어떨까요?
int padding = 5 - name.length(); | ||
String paddedName = name + " ".repeat(padding); | ||
return paddedName; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
해당 부분을 별도의 메서드로 추출해보는 건 어떨까요?
메서드 이름을 통해 어떤 로직을 수행하는지를 보다 쉽게 표현해볼 수 있지 않을까 생각합니다.
} | ||
|
||
private static void printRow(boolean point){ | ||
if(point){ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이번 과정에서는 if-else
를 사용하지 않기로 했으니, early return 방식으로 바꿔보시면 좋을 것 같아요.
https://jheloper.github.io/2019/06/write-early-return-code/
|
||
public Line(int countOfPerson) { | ||
IntStream.range(0, countOfPerson - 1) | ||
.mapToObj(i -> isInValidPosition(i) ? false : RandomValueGenerator.generate()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
삼항 연산자 또한 if-else
의 축약형이기 때문에, 다른 방식으로 작성해보시면 좋을 것 같습니다.
public static void main(String[] args) { | ||
InputView inputView = new InputView(); | ||
inputView.saveInput(); | ||
System.out.println(inputView.names); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
중간에 사다리게임 참가자 이름을 출력하는 요구사항은 없기 때문에 제거하셔도 될 것 같습니다.
import java.util.stream.Collectors; | ||
import java.util.stream.IntStream; | ||
|
||
public class Ladder { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TDD를 중점적으로 학습하는 과정인데, 핵심 도메인 클래스들에 대한 단위 테스트가 작성되어 있지 않네요 😢
Ladder
에 대한 단위 테스트를 작성해보면 어떨까요?
public class Ladder { | ||
private List<Line> lines; | ||
|
||
public Ladder(int height, int nameSize) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
만약 사다리 높이 값이 음수로 전달된다면 문제가 생길 수 있을 것 같아요.
import java.util.List; | ||
import java.util.stream.IntStream; | ||
|
||
public class Line { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line
클래스에 대한 단위 테스트도 작성해보면 어떨까요?
넵 view에서 도메인 객체 내부의 값을 출력하기 위함이기 때문에 사용하셔도 괜찮습니다. |
안녕하세요 리뷰어님~
최근에 일이 바빠서 pr을 늦게올리게 되었어요..ㅜㅜ
리뷰 받고싶은 부분