다시 딜리버리 타이쿤을 마주했다. 저번주에 지적받은 부분을 모아서 고민해보니 내 코드의 가독성에 큰 문제가 존재한다는 것을 알 수 있었다. 좋은 코드는 책읽듯이 읽혀야 한다는데 왜 이런 문제가 발생했을까?
기능보단 구조부터!
객체지향의 사실과 오해를 읽고 객체지향 프로그래밍에서 가장 중요한 부분은 객체간의 상호작용에 집중하여 구조(도메인모델)를 작성해야 한다는 것이다. 하지만 저번주 딜리버리 타이쿤을 보니 구조는 커녕 기능구현하기에 급급했던것 같다. 이렇게 하니 필요한 기능이 있을때마다 조잡하게 기능을 구현한 메서드를 새로짜야해서 좋은 코드가 나올 수가 없었다.
오늘의 구조
내가 고민이 되었던 부분은 배달맨에 불과한 DeliveryMan객체가 자산을 전부 관리한다는 부분이 조금 마음에 걸렸다. 자양강장제를 배달맨이 써서 회복한다는 것은 납득이 갔다. 하지만 광고도 가게 주인이 하는 것이고, 도박도 가게주인이 하는것인데, 왜 DeliveryMan이 잔액을 관리할까? 내가 내린 결론은 배달맨이 가게주인에게 자양강장제를 사먹은 돈을 청구하는 것으로 마무리 되었다. 이렇게 생각하니 객체간에 상호작용을 고민해봐야 한다는 말이 조금은 와닿은 것 같다.
상호작용을 잘하려면?
처음부터 전체 객체간의 상호작용을 파악하긴 어렵다. 탤런트 코드에서 나왔듯이, 중심이 되는 도메인을 먼저 확인하고 (여기서는 배달하고, 아이템쓰고하는 배달맨!) 중심 도메인을 기준으로 상호작용을 청킹하는게 효율적이라는 생각이 들었다. 앞으로 도메인모델을 짤 때는 중심 도메인부터 파악하고 가지처럼 뻗어나가는 다른도메인과의 상호작용을 고민해보자!
'TIL' 카테고리의 다른 글
프로젝트 1일차 작업회고 (22.08.27TIL) (0) | 2022.08.27 |
---|---|
밸류와 엔티티(22.08.26TIL) (0) | 2022.08.26 |
쪼개기(22.08.24TIL) (0) | 2022.08.24 |
모방 (22.08.23TIL) (0) | 2022.08.23 |
실패 기록하기(22.08.22TIL) (0) | 2022.08.22 |