2022 Masters Course/Web Backend Course

2022 마스터즈 코스(백엔드) 28일차 회고(2022. 2. 16.) - "객체의 책임과 역할 분리"

ikjo 2022. 2. 16. 18:48

해당 글은 코드스쿼드 2022 마스터즈 코스 "Java 웹 백엔드" 과정을 수강하면서 학습한 내용 등에 대한 회고 글입니다. :)

 

수강 회고

어제에 이어 오늘도 클린 코드 관련 미션을 이어서 진행했고 오후에는 소모임원들과 그룹리뷰를 진행했다. 지난 CS10 과정에서도 그룹 리뷰가 정말 많은 도움이 되었는데 이번 웹 백엔드 과정에서 그룹 리뷰를 통해 많은 것을 배워가고 있다. 만일 그룹 리뷰를 하지 않았으면 나의 생각에만 매몰되어 있었을텐데 다른 수강생들께서 작성한 코드를 보면서 나의 코드를 되돌아 볼 수 있었다.

 

평상시 나는 좋아하는 부분 또는 잘하는 부분에만 관심을 갖곤 했었는데 그룹 리뷰 시간에서는 내가 관심없었던 기술적인 부분에도 관심을 갖는 계신 분들이 있어 다양한 기술에 대한 고민을 하게 될 수 있어서 많은 도움이 된다. 확실히 이러한 부분들 덕에 작년에 독학할 때보다 더 깊이 있게 학습을 할 수 있음을 느끼고 있다.

 

 

학습 회고

  • 클린 코드 관련 미션 과제 풀이 및 그룹리뷰
    • Java 웹 백엔드 클래스 내 소모임원과 zoom 회의실에서 학습

 

매번 자바 프로그래밍을 할 때마다 느끼는 것이지만 이번 클린 코드 관련 미션을 진행하면서도 객체들의 책임과 역할을 나누는 부분이 항상 고민이 많이 된다. 이거는 저걸로 빼야할까? 저거는 여기에 포함시켜야할까? 등등 고민이 많은데 아무래도 책임과 역할을 분리하는 것은 명확한 기준이 있다기보다 개발자의 주관적인 생각으로 하는 것이기 때문이지 아닐까 싶다. 그리하여 올해 코드스쿼드를 시작하면서 읽기 시작한 "객체지향의 사실과 오해" 책을 읽으며 관련한 내용을 정리해보았다.

 

객체의 역할과 책임

객체들은 다른 객체들과 협력하는 과정 속에서 특정한 역할을 부여받는다. 카페라는 애플리케이션을 예로 들면 손님, 캐시어, 바리스타 등의 역할이 존재할 수 있다. 이때 특정한 역할은 특정한 책임을 암시한다. 협력에 참여하며 특정한 역할을 수행하는 객체는 역할에 적합한 책임을 수행하게 된다.

 

마찬가지로 카페라는 애플리케이션을 예로 들면 손님에게는 커피를 주문해야하는 책임이 있고, 캐시어에게는 손님의 주문을 받고 이를 바리스타에게 전달할 책임이 있으며, 바리스타는 커피를 제조할 책임이 있다. 이처럼 객체별로 적절한 역할과 책임을 분리하는 것은 객체지향 설계의 품질을 결정하는 가장 중요한 요소이다.

 

객체들이 협력을 위해 특정한 역할과 책임을 수행할 때는 다음 사항들이 적용된다.

  1. 여러 객체들이 동일한 역할을 수행할 수도 있다.
  2. 역할은 대체 가능하다.
  3. 객체가 책임을 수행하는 방법은 자율적으로 선택할 수 있다.
  4. 하나의 객체가 동시에 여러 역할을 수행할 수 있다.

협력 속에 사는 객체

객체지향 애플리케이션의 아름다움을 결정하는 것은 협력이다. 이때 협력의 품질을 결정하는 것은 객체의 품질이다. 이러한 객체의 요건에는 다음 사항들이 있다. 

 

  1. 객체는 충분히 협력적이어야 한다. → 다른 객체의 요청에 응답할 뿐
  2. 객체는 충분히 자율적이어야 한다. → 다른 객체의 요청에 대한 처리 방법은 스스로 결정

 

 

좋았던 점

  • 그룹 리뷰를 통해 내가 몰랐었던 점과 부족한 점들을 체크할 수 있어서 유익했습니다.

 

 

아쉬웠던 점

  • 의식적으로 일정 관리를 제대로 하지 못해 수면 시간과 식사 시간이 불규칙해졌습니다.

 

 

참고자료

  • 위키북스 출판 "객체 지향의 사실과 오해"