첫 리뷰 요청에서는 사다리를 내려갈 때 모든 플레이어가 한 층씩 내려갔다. 층을 내려갈 때 다리가 있으면 다리의 왼쪽과 오른쪽에 있는 유저의 위치를 바꾸어주었다. 이렇게 끝까지 내려가면 플레이어들의 최종 위치가 결과 리스트로 생성된다.
처음에는 위와 같은 방식이 효율적이어서 선택했다. 모든 유저를 한 번에 계산하기 때문에 성능적으로 좋아보였다.
하지만 만약 밑에서 위로 연결되는 다리가 있다면 내가 선택한 방식을 쓸 수 없다. 그리고 현실에서 내가 선택한 방식으로 사다리타기를 하지 않는다. 보통 한 명씩 사다리를 탄다. 성능적으로는 이점이 있을지라도 확장성에 있어서 단점이 많이 보이는 방법이었다. 그래서 두번째 리팩터링을 하면서 한 명씩 사다리를 타는 방식으로 변경했다.
처음 코드를 작성할 때 controller에 도메인 생성이나 정보 교환 로직을 넣었다. controller는 view와 domain의 이어주는 역할만 담당해야하는데 도메인이 담당해야할 부분까지 역할 수행을 했다. 리팩터링하면서 최대한 controller의 크기를 줄여보려 했으나 실패한 것 같다.
회고를 하는 지금 코드를 보았을 때 controller를 더 작게 줄여볼만한 부분이 여럿 보였다. 특히 모든 domain 생성을 controller가 담당하게 하여 아쉬웠다.
코드 : https://github.com/shb03323/java-ladder/tree/step2
PR : https://github.com/woowacourse/java-ladder/pull/219
오래전 미션의 회고여서 그런가,,, 코드가 너무 별로라는 생각이 강하게 든다. 나 정말 발전하긴 했나보다.
마무리 부분이 정말 인상적이네요