본문 바로가기

우아한테크코스/미션 정리

(11)
[코드리뷰 정리] Level 1. 체스 미션 -DTO 이번 체스 미션에서는 웹 적용을 하면서 새롭게 배운 개념들이 너무 많았다. 때문에 이번 미션을 진행하면서 새로 배운 개념들과, 휴가 주신 피드백을 정리하는 방안으로 기록해야겠다 ✍️ step1에서의 DTO 사실 DTO의 개념은 대략 알고 있으나, 전 미션까지는 DTO의 필요성을 잘 못느끼고 있어서 사용하지는 않았었다. 이때 같은 경우는 현재 기물들을 나타내는 Pices 객체들만이 존재할 뿐인데 View에서는 64개의 position에 대한 정보를 출력하기 위해 Pieces의 메소드를 통해pieces.findByPosition(CACHE.get(xy)); 로 도메인에 대한 의존성이 생기고 있었다. 그래서 이를 제거하기 위해 휴의 리뷰대로 DTO를 만들어 View에 필요한 데이터들을 전달해주기로 하고 이 방..
[코드 리뷰 정리] Level 1. 블랙잭 2021-03-15글 Controller에 있는 도메인 로직 게임 진행을 위해 Controller에 많은 역할을 구현했었다. 위 피드백을 받고 BlackjackGame이라는 객체를 만들어 게임의 진행을 하도록 구현했다. 각각의 플레이어들의 게임을 진행에 Input과 Output이 연결되어 있어서 처음 리팩토링에서는 BlackjackGame에서 플레이어들을 꺼내오고, 플레이어 하나 하나마다 게임을 진행하게 되었다. BlackjackController 일부 private void askWantToHit(Player player, BlackjackGame blackjackGame) { while (isAbleToAskHit(player, blackjackGame) && Answer.of(InputView.in..
[코드 리뷰 정리] Level1. 로또 2021-03-01글 1단계 피드백 객체인 Controller LottoFactory를 인스턴스 변수로 두지 않았던 이유는 Controller는 객체가 아니라 데이터를 가지면 안된다고 생각하고 있었다. 당연히 Domain만 객체라고 생각했었다. (모르는건 부끄러운게 아니다 🥲) 하지만 생각해보니 Controller도 도메인과 뷰를 이어주는 동시에, 객체를 생성하는 책임이 있다. 인스턴스 변수로 가지고 있게 된다면 getLottoTickets 메소드에서 매번 객체를 생성할 필요가 없다. 일단 이 코드에서 중요한 점은 어차피 지금 로또를 생성하는 책임을 컨트롤러에서 하고 있었으니 "불필요한 객체 생성을 방지하도록 인스턴스 변수로만들어서 재활용하자"가 목적이다. 반영한 커밋 반복되는 상수 처리 미션 데드라인을..