Skip to content

1주차 금요일 그룹 4

김현준 edited this page Jun 28, 2024 · 2 revisions

강승훈

고민한 내용

  • 페어 프로그래밍을 진행하며 효율적인 방법, 책임을 나누는 방법에 대해 고민을 했습니다.
  • Position을 조회할 때 마다 계속 생성하거나 계산하는 방법을 효율적으로 개선할 방법에 대해 고민했고, 이를 Map 자료 구조에 관리하여 불필요한 객체 생성과 좌표 계산을 줄였습니다. 이미 이동할 수 있는 Position은 Map에 한정되어 있기 때문에, 범위가 넘어가는 등의 예외 상황도 쉽게 처리할 수 있었습니다.
  • Board와 ChessGame에 대한 책임을 나누는 방법에 대해 고민했습니다. Board에 모든 작업을 가져가기 보다는, ChessGame에서 작업을 많이 가져가고 Board는 단순한 Board의 역할을 하기 위해 고민했습니다.

공유한 내용

  • 불필요한 계산, 객체 생성을 줄이고 Board와 ChessGame의 역할을 분리했던 과정을 공유했습니다.
  • 페어 프로그래밍을 어떻게 진행했고, 어떤 장단점이 있는지 공유했습니다.

후기

  • 다들 다른 기준점을 가지고 어떻게 책임을 분리할 지 고민하고, 그 고민에 따라 내부 구현은 모두 달랐던 점이 재밌었습니다.
  • 특히 객체를 주입하여 사용하는 점이 재밌었고, 각자 다른 생각을 공유하며 시야가 확장되는 느낌을 받아서 좋았습니다.

김승수

고민한 내용

말 이동 경로를 계산하는 책임은 게임 규칙( 게임)이 가지고 있는 것이 좋을지 말이 가지고 있는 것이 좋은지 일급 컬렉션을 사용하는 것이 좋은지 ?

공유 내용

일급컬렉션의 불변성 및 은닉성 이라는 장점이 있어 사용한다 말 이동계산을 할 때 board 를 의존하게 되는데 board가 말을 이미 가지고 있어 board 에서 말 이동 계산을 하는 메소드를 작성해도 괜찮지 않을까 ?

후기

Chess 게임에는 규칙과 보드 말 등 다양한 객체들이 존재 할 수 있다. 어떤식으로 게임을 해석하고 객체지향적 설계를 하느냐에 따라 구현방법이 다양할 수 있다는 것을 느꼈다. 일급 컬렉션을 이용하여 class를 나눠 책임을 지게 하는 것도 좋다.

김현수

진행 사항

  • step-7 까지 진행하였습니다.

특이사항

  • 위치 String 을 Position으로 반환해주는 static Map을 만들어 위치를 매번 계산하지 않도록 구현함
  • Board 는 크기, 기물 정보 기물 이동의 관한 기능만 가지고 그 외 체스의 관한 기능은 ChessGame 에서 구현함
  • 페어 프로그래밍을 진행해 구현에 대한 고민을 나눌 수 있어서 더 좋은 방법을 찾는 것에 많은 도움이 됨.

고민 사항

  • 반복되는 메소드 등을 추출하는 리팩토링 과정이 필요함.
  • Piece 의 움직임을 Board에서 책임지고 ChessGame에서 참조하는 방식이 맞는 건지 모르겠음.
  • Rank를 일급 컬랙션으로 작성해야하는 이유가 궁금함.

후기

  • 저번에도 느낀 거지만 다른 사람들과 코드를 비교해보면 같은 코드가 거의 없는 것 같아서 새로운 내용을 얻을 수 있어서 도움이 많이 되는 것 같음.

김현준

고민 사항

  • 어떻게 하면 확장성이 좋은 설계를 할 수 있을까 고민했어요.
    • 객체의 책임과 분리에 고민했어요.
    • Piece는 자신이 이동할 수 있는 방향과 거리를 갖게하고
    • Board는 보드판에 대한 것들을 다루고
    • Rule은 Piece와 Board를 이용해 룰에 적합한지 검사하고 실행하도록 했어요 !
  • 최대한 컴팩트한 코드에 대해 고민했어요.
    • 메서드의 분리와 Stream의 활용으로 최대한 짧고 가독성이 좋은 코드를 쓰도록 했어요
    • 메서드 이름에 반드시 의도를 명시했어요.
    • 주석을 못쓴게 너무 아쉽네요 ㅠㅠ
  • 특수룰의 알고리즘에 대해 많이 고민했어요.
    • 체크메이트가 너무… 힘들었는데 모든 경우의 수를 구하는 로직을 통해서 작성했어요.
    • 프로모션을 위해 Enum에 정적 생성 메서드를 넣었어요.

공유 사항

  • 코파일럿을 꼭 써라 ! → 생산성 상승
  • 일급 컬렉션
    • 이차원 배열과 컬렉션은 각 역할이 있다 !!
    • 역할을 쪼개다 보면 일급 컬렉션이 나올 것 같다 !
    • 요구사항의 변경이 없어서 필요없어 보인다 → 보드 10x10, 장기로 바꾸면?!
  • 인텔리제이 꿀팁 → 커밋시 자동으로 포매팅 및 실시간 import 최적화

후기

  • 일급 컬렉션 호눅스님과 얘기한 부분이 너무 좋았습니다.
  • 다른분들의 의견을 듣는 부분은 너무 좋아요
    • 역시 생각치도 못한 새로운 인사이트는 개발을 재밌게 해요!
  • 코드의 디테일이나 역할 분배에 있어 조금 더 디테일하게 해야될 것 같아요 !

지찬우

고민 사항

  • 체스판 출력과 기물의 움직임을 담당하는 객체에 체스판 객체를 주입하는 형식이 과연 좋은 구조였을까?
  • Rank라는 일급 컬렉션이 꼭 필요했을까?
    • 모든 것을 Board에서 다 하려고 하지는 않았나???
    • 요구사항이 변경되지 않아서 느끼지 못한 것이 아닐까?
    • 정답은 없다!

공유 사항

후기

  • 기능 구현에 급급해 테스트 코드를 전혀 작성하지 못한 부분이 아쉽다.
  • 시간 조절을 잘못해 체스라는 요구사항을 완벽하게 구현하지 못하고 시간이 부족했던 것이 아쉽다.

👼 개인 활동을 기록합시다.

개인 활동 페이지

🧑‍🧑‍🧒‍🧒 그룹 활동을 기록합시다.

그룹 활동 페이지

🎤 미니 세미나

미니 세미나

🤔 기술 블로그 활동

기술 블로그 활동

📚 도서를 추천해주세요

추천 도서 목록

🎸 기타

기타 유용한 학습 링크

Clone this wiki locally