-
Notifications
You must be signed in to change notification settings - Fork 415
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
[디디] 체스 1주차 미션 제출합니다. #52
Conversation
- Position은 내부적으로 file과 rank를 알고 있다. - Position을 map으로 캐싱해서 String 입력 값에 따라 해당하는 position 객체를 반환
- Piece는 자신의 위치를 안다 - Piece는 자신이 속한 Player를 안다
- Board를 초기화하기 위한 BoardInitializer 인터페이스 추가 - Board initializer가 사용할 초기 데이터인 InitialPieceRepository 추가 - EnumRepositoryBoardInitializer에서 repository를 참고하여 board 초기화
Todo. - 장애물이 있을 경우 판단하는 로직 구현 필요 - Knight를 제외한 다른 piece의 이동 규칙 구현 필요
- 게임의 진행 상태를 나타내는 State 생성 - Application 로직에 있던 내용을 Controller로 이동 - InputView의 리팩토링 - Board 출력을 위한 ResponseDto 생성 - OutputView에서 ResponseDto로 출력하는 로직 구현 - Piece의 색에 따라 toString 구현 - 한 게임을 관리하는 ChessGame 생성 - 이동을 위한 파라미터 객체인 MoveParameter 생성
- EnumRepository에서 생성된 피스를 가지지 않고, 피스 generator를 가지고 있도록 변경 - EnumRespositoryInitializer에서는 해당하는 generator로 피스를 생성하여 보드 초기화
- 이동 규칙에 적합하게 움직이는 지 테스트 - 중복되는 메서드를 템플릿 메서드로 분리 - PieceState를 적절하게 반환하도록 구현
- Piece의 상태에 따라 Ready, Running, End로 분리
- Rook Test 구현 - Direction 개념 구현 - Direction 에 맞게 position 이동 구현 - Rook 이동 구현
- Bishop Test 구현 - Direction 이 음수도 나오도록 수정 - Direction 에 맞게 position 이동 수정 - Bishop 이동 구현
- King Test 구현 - Direction 에 존재하지 않는 target의 경우 예외처리 - King 이동 구현
- 현재 Trun인 플레이어만 move가 가능하도록 구현 - 각 Piece 이동에 맞게 테스트 refactor - Pawn 이동 규칙에 맞게 분리
- 플레이어 체크 안되는 버그 수정
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.
안녕하세요 디디
몇 가지 피드백을 남겼으니 확인해주세요
- 접근제어자 추가 - 불필요한 객체 삭제 - 매직넘버 상수화 - 가독성이 떨어지는 메서드 분리
- indent 줄이기 위해 메서드 분리 - status 결과 객체 구현 - 결과 계산시 종료 구현
- 컨벤션 리팩토링 - 테스트 에러 수정
안녕하세요 리뷰어님 피드백 잘 받았습니다! 피드백 반영 도중 궁금한게 있어서 정리해서 질문드립니다! 답변주시면 정말 감사하겠습니다!!
바쁘신데 피드백 감사드리고 그 외에 부족한 점이나 공부해야 할 점이 있다면 같이 알려주시면 공부해서 반영하도록 하겠습니다. 감사합니다😀 |
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.
안녕하세요 디디!
간단한 피드백 남겼으니 확인 부탁드려요 :)
-
말씀하신대로 구현되어있지 않은 것 같아요.
enum을 key값으로 하고 행위를 value로 담아서 switch문을 없앨 수 있을 것 같아요.
각 행위에는 정의해놓으신 RequestDto을 파라미터로 사용해도 좋을 것 같아요. -
MovingDirection.getDirection(position, target) 을 내부로 감추면 어떨까요?
-
피드백을 참고해주세요!
|
||
import java.util.function.BiFunction; | ||
|
||
public enum InitialPieceRepository { |
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.
Repository라는 네이밍은 어울리지 않는 것 같아요.
return new EndState(createStatus()); | ||
} | ||
|
||
public Status createStatus() { |
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.
RunningState에서 점수를 계산하는 것은 역할에 맞지 않아 보여요.
더불어 결과에 대한 테스트를 추가하면 좋을 것 같아요.
|
||
PieceDto pieceDto = boardDto.get(target); | ||
if (ATTACK_DIRECTION_BY_PLAYER.get(player).contains(direction)) { | ||
if (Objects.isNull(pieceDto)) { |
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.
indent 규칙 위반
MovingDirection movingDirection = MovingDirection.getDirection(position, target); | ||
|
||
if (MOVING_DIRECTION_BY_PLAYER.get(player).equals(movingDirection)) { | ||
if (position.getRankDifference(target) != movingDirection.getRankDirection()) { |
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.
indent 규칙 위반
- state 패턴 삭제 - service layer 추가 - indent 규칙에 맞게 리팩토링 - 기타 컨벤션에 맞게 수정
- Index page에 접근가능하도록 구현 - Index page에서 현재 존재하는 방 목록 보여주도록 구현 - DB에 접근하여 방 목록을 가져오도록 구현
- 저장시 DB에 저장 - 불러오기 시 DB 로부터 게임 load - 진행중인 게임을 저장하지 않고 종료시 DB 삭제 - 진행중인 게임에서 새 게임 플레이 가능
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.
디디!
미션 진행하느라 고생하셨어요 :)
감사합니다. 잘부탁드립니다.