1장에서 다루는 내용


  1. 시스템 복잡도를 증가시키는 경향이 있는 OOP
  2. OOP를 이해하기 어려운 이유
  3. 객체에 코드와 데이터를 혼합하는 대가

책 1.1장에서 보여준 도서관 시스템을 만들기 위한 클래스 다이어그램을 보면 상당히 복잡하다. OOP에 내재된 복잡성의 주요 근원은 다음과 같다.

  1. 코드와 데이터가 섞여있다. → 클래스가 많은 관계에 연루되는 편이다.
  2. 객체가 변경 가능하다. → 코드를 읽을 때 더 많은 생각이 필요하며, 멀티 스레드 환경에서 명시적 동기화가 필요하다.
  3. 데이터가 멤버로 객체에 고정된다. → 데이터 직렬화가 쉽지 않다.
  4. 코드는 메서드로 클래스에 고정된다. → 클래스 계층 구조가 복잡하다.

이 분석 내용은 FP가 OOP를 바라보는 생각과 비슷하다. 다만 DOP는 복잡도를 줄이려고 취하는 데이터 접근법이 FP와는 다르다.

요약