-
Notifications
You must be signed in to change notification settings - Fork 0
박민지 1주차 체스 학습 일지
Park minji edited this page Jul 3, 2024
·
5 revisions
1주차 미션이었던 체스 게임은 단계별 요구사항을 주어진 가이드라인(필수는 아닌)에 기반해 구현하는 시간이었습니다.
단계가 높아질수록 앞서 구현했던 기능이 필요 없게 되거나, 수정해야 하는 경우가 생겨 작성한 코드의 수정/삭제 여부를 판단해야 했습니다. 뒤 단계에서 어떤 요구사항이 생길지 모르기 때문에 코드 수정/삭제 판단을 내리기가 생각보다 쉽지 않았습니다.
MVC 사용을 지양하자는 요구사항이 있었고, 스프링을 사용하지 않는 프로젝트여서 아무런 틀 없이 무작정 짜보기로 했습니다. 아무런 틀도 없이 간단한 요구사항부터 점차 복잡한 요구사항을 구현하려니 중간중간 클래스 추출, pull up method 등 리팩토링이 필수였습니다. 이 과정에서 다음 사항을 배울 수 있었습니다.
- 특정 기능을 처리하기 위해 필요한 데이터를 가진 클래스가 무조건 특정 기능을 처리해야 하는 책임을 가지는 것은 아니다.
- 책임 분리를 위해 클래스를 추출할 때, 해당 클래스로 데이터를 넘겨주는 방식은 파라미터 혹은 클래스 변수가 있는데, 데이터의 삽입/수정/삭제 등 조작 기능이 필요하지 않다면 파라미터로 데이터를 넘겨주는 편이 좋다.
- 도메인 주도 개발 시작하기라는 책을 읽고 있는데, 도메인 모델과 도메인 서비스를 나누는 기준으로 볼 수 있을 것 같아 특히 와닿았습니다.
- 책임 분리의 필요성을 코드를 작성한 뒤에야 느낄 수 있는 경우도 있어, 코드 작성 전에 코드를 깨끗하게 짜기는 어렵다.