-
Notifications
You must be signed in to change notification settings - Fork 416
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, 4단계 - 체스] 구름(김민수) 미션 제출합니다. #762
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.
구름, 3,4단계 미션 구현하시느라 수고하셨습니다.
이번 단계도 마찬가지로 정말 적절한 정도 내에서 코드 구현을 너무 잘 해주신 것 같아요. 제가 특별하게 피드백을 드릴만한 부분이 잘 보이질 않네요.. ㅠㅠ 테스트도 적절하게 잘 작성해주신 것 같고요. 우선 간단한 부분에 대해서 피드백을 남겨봤습니다. 혹시나 추가로 의견을 받거나 피드백을 받고 싶은 부분 또는 고민이 되는 부분이 있다면 참고해서 추가적인 피드백을 드려보도록 하겠습니다!! 👍🏼
import java.util.Set; | ||
|
||
public abstract class Piece { | ||
protected final Set<Direction> directions; | ||
private final Color color; |
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.
이번에 필드에서 direction과 pieceType을 제거하였는데 이유가 있을까요?
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.
이게 참 어렵네요.
필드로 가지고 있는 것보다 좋은 것 같아서 여러 코치님들한테 물어봤었거든요.
개인적으로 부모 클래스의 필드로 가지고 있으면 부모 클래스가 알아야할 부분이 늘어난다고 생각했어요.
스티치는 어떻게 생각하시나요? 어떤 느낌인지는 알겠는데 표현하기가 힘드네요.
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.
전 메서드로 제공되는 것들은 행위인 인터페이스라고 생각하는데 체스의 기물에서 방향과 기물 유형은 행위로 보기 보다는 속성으로 보는게 맞을 것 같다고 생각했습니다. 그래서 그 성격에 맞게 필드로 가지는게 더 낫지 않나? 라는 생각을 하긴 했어요. 프로퍼티는 결국 객체의 존재에 대한 표현이라고 생각하는데 이 두 값은 기물이라는 객체를 표현할 때 필요한 속성이 아닐까? 라고 생각하긴 합니다 :) 개발자 개인의 차이가 있을 수 있으니 참고만 해주세요!
음.. 우선 chess game 테이블과 dao를 제거했습니다. 다음으로 말씀하신 chessGame에 대해서입니다. 아마 피드백에 대한 의도는 getChessGame 혹은 loadChessGame을 메서드를 ChessGameService에 두고 사용하는 방향으로 추정됩니다. (맞나요?? ㅠㅠ) 미리 리뷰 감사드립니다... |
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.
구름, 피드백 반영하시느라 수고하셨습니다. 우선 간단한 부분들에 대한 피드백만을 남겨뒀는데 한번 확인 부탁드릴게요.
추가로 남겨주신 코멘트에 대해서는 제 생각은 조금 다르긴 합니다. 먼저 다른 크루들이 캐싱 등을 한다고 했는데 지금은 캐싱을 하는 것보다는 도메인을 잘 설계하고 작성하는 것이 더 중요하다고 생각합니다. 구름이 작성한 코드는 전에도 말씀드렸지만 제가 보기엔 충분히 잘 짜여진 코드라고 생각합니다. 과하지도 않으면서 부족하지도 않고, 지금 집중해야 할 부분에 잘 집중해서 작성한 코드라고 생각해요. 상태패턴도 충분히 적용해볼만한 내용이었다고 생각하고요.
게임도 당연히 start를 하지 않는 이상은 시작되지 않는 것이 맞기에 지금의 코드가 이상한 것은 아니라고 생각합니다. 만약 start 키워드를 입력하기 전에 '이미 존재하는 게임이 있을 경우 게임을 로드한다'라는 요구사항을 구현하고 싶다면 이는 코드 상에서 충분히 해결 가능하다고 생각합니다. 키워드를 입력받기 전 db를 조회한 후, 만약 게임 데이터가 존재하면 내부적으로 start를 호출하면 될 것이고요. 그래서 상태패턴의 문제는 아니지 않을까? 생각해요.
이번에도 좀 다양하게 피드백을 드리고 싶었지만 제가 보기에 구름의 코드는 따로 피드백을 드릴 부분이 없어보여서 더 드리질 못했네요.. 그치만 레벨1 마지막 미션이고 시간도 살짝 여유가 있는 만큼 바로 머지하지 않고 한번 더 RC로 남겨두었습니다. 혹시 궁금한 점이 있거나 좀 구현 상에서 한번 더 이야기를 나누고 싶은 부분이 있다면 DM으로 연락 주세요 :) 만약 추가로 더 피드백 받을 만한 내용이 없다면 말씀주시면 머지 하도록 하겠습니다 👍🏼
미션 진행하시느라 수고 많으셨어요 :)
import java.util.Set; | ||
|
||
public abstract class Piece { | ||
protected final Set<Direction> directions; | ||
private final Color color; |
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.
전 메서드로 제공되는 것들은 행위인 인터페이스라고 생각하는데 체스의 기물에서 방향과 기물 유형은 행위로 보기 보다는 속성으로 보는게 맞을 것 같다고 생각했습니다. 그래서 그 성격에 맞게 필드로 가지는게 더 낫지 않나? 라는 생각을 하긴 했어요. 프로퍼티는 결국 객체의 존재에 대한 표현이라고 생각하는데 이 두 값은 기물이라는 객체를 표현할 때 필요한 속성이 아닐까? 라고 생각하긴 합니다 :) 개발자 개인의 차이가 있을 수 있으니 참고만 해주세요!
@@ -13,4 +14,6 @@ public interface GameState { | |||
GameState status(); | |||
|
|||
boolean isPlaying(); | |||
|
|||
Color getCurrentTurn(); |
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.
체스 게임 도메인에서 기물의 색상을 Color라는 용어로 일관되게 사용하면 코드의 이해도나 통일감에 있어 더 좋을 것 같아요. getCurrentColor와 같이요. 동일한 도메인을 표현하는 용어가 여러가지로 사용된다면 코드를 읽는 사람으로 하여금 혼동을 줄 여지가 있을 것 같아서 제안드려봅니다 :)
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.
일관성 참 중요하죠.
처음부터 turn을 사용하고 싶었는데 color로 잘못 지었더니 헷갈렸던 것 같습니다.
모두 수정했습니다.
안녕하세요. 스티치! 구름 ⛅️입니다.
1,2단계 PR를 머지한지 벌써 일주일이 넘었네요.
핑계지만 글쓰기와 테크톡때문에 정신이 없었습니다.
코드가 깔끔하지 않습니다. 그럼에도 불구하고 피드백을 받을 수 있는 기간이 얼마 남지 않은 것 같아서 PR을 빠르게 보내봅니다.
우선 저는 게임을 저장할 때 chess_game을 만들고, 그것과 연결된 기보들을 저장합니다.
게임이 끝난 경우는 chess_game의 game_status를 finished로 변경합니다.
기존에 게임이 있는지 찾는 방법은 chess_game을 id로 정렬하고 game_status가 playing인 마지막 하나를 가져옵니다.
그리고 도메인인 chessGame에서 load를 통해 이전 기보들을 실행시킵니다.
dao테스트 방법은 마땅히 생각나지 않아서 @AfterEach를 통해서 테이블을 지우는 방법을 선택했습니다.
피드백 주시면 빠르게 반영하겠습니다. 죄송합니다.