-
Notifications
You must be signed in to change notification settings - Fork 5
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
base: changhyeonh
Are you sure you want to change the base?
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.
창현님 과제 하느라 수고 많으셨습니다!!👍👍
현재는 입력 값에 대한 파싱을 Coordinates에서 하고 Coordinate를 생성하여 바로 add하고 있습니다. 파싱을 입력값을 받을 때 바로 하고 검증까지 해주는 것이 좋을지, 아니면 현재 저 처럼 해도 될지 궁금하네요! 혹시 다른 분들의 생각은 어떠신가요?
이 부분에 대해서는 코멘트도 남겨두었지만, 저는 입력 값에 대한 파싱은 Input
의 책임이라고 생각합니다. (예를 들어 입력 형식에 안맞다던가 하는)
Coordinates
의 책임은 입력에서 파싱을 마친 후의 범위를 검증하는 것이라고 생각해요!
Line, Square, Triangle 모두 생성자에서 계산 로직을 담고 있는데 생성자에서 계산 로직을 담고 있는 것이 좋을까요? 아니면 생성자에서 필드에 값을 저장하고 계산 메소드를 호출하는 방식으로 작성하는 것이 더 좋을까요?
일단 저는 전자보다는 후자가 더 낫다고 생각합니다! 생성자에서 계산하는 것보다 getArea()
에서 계산해주는 게 더 맞는 것 같습니다 :)
추가로 Square, Triangle 가 넓이 계산을 위해 Line에 의존하고 있는 것이 신경쓰입니다😅
삼각형과 사각형은 직선으로 되어있는 것이 아니라 점으로 형태를 띄고 있는 것인데 직선에 의존하는 것이 맞나?? 라는 의문이 듭니다! 5각형, 6각형이 생길 때도 모두 Line에 의존하는 형태가 될 것 같아요. �
점과 점 사이의 계산은 Line이 아닌 점에서 해주는 것이 어떨까요??
추가로 Line, Square, Triangle 를 추상화 시킬 수 있을 것 같습니다!! 😎
coordinates.add(coordinate); | ||
} | ||
} | ||
|
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.
parseCoordinates
은 Input
의 역할 아닐까요?? (저의 작은 의견입니다! ><)
예를 들어 "(a-b)"와 같은 잘못 들어온 입력값에 대한 예외 처리는 어떻게 하나요??
Square square = new Square(width, height); | ||
|
||
OutputView.squareAreaGuide(square.getArea()); | ||
} |
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.
각각의 모형을 생성하는 책임을 가진 클래스를 만들면 좋을 것 같아요!!
모형에 대한 추상화를 하는건 어떨까요?? 결국 getLineLength
나 getArea
를 모두 getArea
로 정의할 수 있을 것 같아요!!
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.
안녕하세요 창현님😊
우선 과제하시느라 정말 고생많으셨습니다!
궁금했던 점과 제 생각을 간단히 작성해보았는데 시간날때 리뷰 확인 부탁드릴게요
고생하셨습니다!!🔥🔥
✅ PR 포인트 & 궁금한 점
현재는 입력 값에 대한 파싱을 Coordinates에서 하고 Coordinate를 생성하여 바로 add하고 있습니다. 파싱을 입력값을 받을 때 바로 하고 검증까지 해주는 것이 좋을지, 아니면 현재 저 처럼 해도 될지 궁금하네요! 혹시 다른 분들의 생각은 어떠신가요?
저는 입력값을 받고 바로 검증을 해주는게 좋은 방식이라고 생각합니다!
Coordinates라는 이름을 가진 객체가 스트링을 받아서 파싱을 하기 보다 input단이나 Converter(parser)에서 하는 것이 적절한 방식이라고 생각합니다😊
Line, Square, Triangle 모두 생성자에서 계산 로직을 담고 있는데 생성자에서 계산 로직을 담고 있는 것이 좋을까요? 아니면 생성자에서 필드에 값을 저장하고 계산 메소드를 호출하는 방식으로 작성하는 것이 더 좋을까요?
저는 생성자에서 필드에 값을 저장하고 계산 메소드를 호출하는 방식으로 작성하는 것이 좋다고 생각합니다!
생성자는 단지 객체의 상태를 유효성을 확인한 후 초기화하는 것에 충실하고 중요한 계산 로직과는 구분되어야 할 것 같아요
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.
처음에 일급컬렉션으로 작성된 클래스라고 생각했는데 맡고 있는 기능이 Parser나 Converter에 가까워 보입니다!
클래스명을 변경해도 좋을 것 같고 이 클래스를 유지한다면 parse의 역할은 Input 단이나 별도의 Converter에 넘기는 것도 좋을 것 같습니다ㅎㅎ
char[][] map = new char[24][24]; | ||
|
||
initMap(width, height, map); | ||
checkMap(coordinateList, map); | ||
coordinateMap(width, height, map); | ||
} |
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.
좌표까지! 역쉬 섬세함 최고 창현님👍🏼👍🏼
public void run() { | ||
OutputView.setCoordinateGuide(); | ||
Coordinates coordinates = new Coordinates(InputView.input()); | ||
List<Coordinate> coordinatesList = coordinates.getCoordinates(); |
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.
일급 컬렉션 사용을 고려하는 것도 좋을 것 같습니다!
OutputView.coordinatePlace(coordinatesList); | ||
Line a = new Line(coordinatesList.get(0), coordinatesList.get(1)); | ||
Line b = new Line(coordinatesList.get(1), coordinatesList.get(2)); | ||
Line c = new Line(coordinatesList.get(0), coordinatesList.get(2)); | ||
|
||
Triangle triangle = new Triangle(a, b, c); | ||
|
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.
면적을 계산하는 코드가 ConsoleApplication에 너무 노출되어 있는게 아닌가 하는 생각이 들었습니다!
Triangle에 coordinatesList를 넘기고 내부에서 계산을 하거나 별도의 계산 메소드를 두어도 좋을 것 같습니다!👍🏼
|
||
public class Line { | ||
|
||
private double lineLength; |
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.
final 추가해도 좋을 듯 합니다!
📌 과제 설명
NextStep 연료 주입 & 좌표 계산기 구현
👩💻 요구 사항과 구현 내용
기능 요구사항
Coordinate
Coordinates
Line
Square
Triangle
InputView
OutputView
구현
선
사각형
삼각형
✅ PR 포인트 & 궁금한 점
현재는 입력 값에 대한 파싱을 Coordinates에서 하고 Coordinate를 생성하여 바로 add하고 있습니다. 파싱을 입력값을 받을 때 바로 하고 검증까지 해주는 것이 좋을지, 아니면 현재 저 처럼 해도 될지 궁금하네요! 혹시 다른 분들의 생각은 어떠신가요?
Line, Square, Triangle 모두 생성자에서 계산 로직을 담고 있는데 생성자에서 계산 로직을 담고 있는 것이 좋을까요? 아니면 생성자에서 필드에 값을 저장하고 계산 메소드를 호출하는 방식으로 작성하는 것이 더 좋을까요?