본문 바로가기
교육 및 책/TDD, 클린 코드 with Java

TDD, 클린 코드 - 사다리

by oneny 2023. 5. 18.

미션 3단계 - 사다리

 

GitHub - oneny/java-ladder: 사다리 타기 구현을 위한 저장소

사다리 타기 구현을 위한 저장소. Contribute to oneny/java-ladder development by creating an account on GitHub.

github.com

 

기능 정리

 

User

  • 5글자 이하인 name을 가진다.

 

Users

  • , 를 구분자로 사람 이름을 구분한다.
  • 유저수를 반환한다.
  • 유저목록을 반환한다.
  • 위치에 해당하는 유저를 반환한다.
  • 유저의 위치를 변경한다.

 

Position

  • 다음 포지션으로 이동 시 현재 포지션에서 +1을 한다.
  • 이전 포지션으로 이동 시 현재 포지션에서 -1을 한다.
  • 현재 포지션을 반환한다.

 

Direction

  • 첫 포인트에 대한 left는 false인 Direction 객체를 반환한다.
  • 마지막 포인트에 대해 이전 포인트의 right 값과 같도록 반환한다.
  • 다음 포인트에 대해 이전 포인트의 right가 true이면 다음 포인트의 left는 true, right는 false인 Direction 객체를 반환한다.
    • 만약 이전 포인트의 right가 false이면 left는 false인 Direction 객체를 반환한다.

 

Point

  • 첫 포인트에 대해 위치가 0이고, 방향 전환할 수 있는 left는 false인 포인트를 반환한다.
  • 다음 포인트부터는 이전 포인트에 대해 의존하여 반환한다.

 

LadderLine

  • 사용자의 수만큼 포인트들이 모인 사다리 라인을 반환한다.

 

LadderHeight

  • 사다리의 높이를 반환한다.
  • 높이가 1 이상인지를 체크한다.

 

Ladder

  • 사다리의 높이만큼 사다리 라인들을 가진 리스트를 반환한다.

 

LadderReward

  • 입력한 꽝 또는 금액을 반환한다.
  • 입력한 값이 꽝 또는 금액인지를 체크한다.

 

LadderRewards

  • 입력한 꽝 또는 금액 리스트를 반환한다.

 

LadderGame

  • 사다리 게임에 참여하는 유저들의 목록을 반환한다.
  • 유저수만큼 사다리 다리를 가진 사다리를 반환한다.
  • 사다리 결과에 따른 유저와 유저가 받을 경품들의 목록을 반환한다.

 

LadderResult

  • 유저 입력 시 해당 유저에 대한 최종 경품을 반환한다.
  • 사다리 타기 게임에 참가한 유저들의 목록을 반환한다.

 

이번 미션을 통해 배운 점

이번 미션은 중간에 예비군이 있어서 부랴부랴한 감이 없지 않아 있는데 그럼에도 불구하고 미션을 잘 완료했는지 리뷰어 분께서 저렇게 리뷰를 남겨주셨다. 특히 제가 배워야 할 것 같아요라고 말씀해 주셨는데 처음에는 당황했지만 리뷰어 분이 단순히 저렇게 말씀하실리는 없고 그만큼 잘했다고 좋게 생각하기로 했다. 자바 3주 공부하고 처음 자동차 경주 미션을 진행했을 때와는 다르게 넥스트스탭을 통해서 정말 많이 성장하고 있는 것을 느끼고 있다! 😊

이번 역시 이전 미션과 마찬가지로 래퍼 클래스와 일급 컬렉션을 많이 활용하였고, 객체를 존중하기 위해서 getter 보다는 해당 객체에 물어보는 식의 메서드들을 구현하였다. 처음에는 객체를 존중하라는 말이 무슨 말인지 아예 이해를 못했는데 계속 미션을 통해서 조금이라도 그 말의 뜻을 조금은 이해해가고 있는 것 같다.

이제 마지막 미션만 남았다!!!🔥🔥🔥🔥