IT자료실/기술서적

오브젝트 - 기술서적 스터디 4단원-설계품질 트레이드 오프

Ramda 2023. 7. 11. 22:02

객체지향 설계

  • 객체지향 설계란 올바른 객체에게 올바른 책임을 할당하면서 낮은 결합도와 높은 응집도를 가지는 것

데이터 중심의 설계

  • 책임 할당의 방식이 아닌 데이터 중심의 설계의 문제점들을 알아보자
  • 데이터 중심의 설계는 객체의 책임이 아니라 객체의 상태에 집중을 한다
  • 객체의 상태는 구현에 속하기 떄문에 캡슐화의 원칙이 무너진다
  • 데이터 중심 설계이지만 캡슐화의 원칙을 지키기위해 사용하는게 데이터 접근자와 수정자를 사용하는 것

캡슐화

  • 캡슐화란 변경 가능성이 높은 부분을 객체 내부로 숨기는 추상화 기법
  • 캡슐화를 사용하는 목적은 유지보수성이다.

캡슐화 위반

  • 데이터 중심으로 설계한 클래스들은 메서드로만 객체의 내부 상태에 접근할 수 있다
  • 주로 사용되는 것이 get과 set이다
  • 예를 들어 getBuy, setBuy 메서드를 가진 클래스가 있다고 생각해보자,
    메서드를 보고 내부에 buy라는 이름의 인스턴스 변수가 있다는 사실을 드러낸다
  • 위와 같은 방법은 대부분의 내부 구현이 퍼블릭 인터페이스에 그래도 노출될 수밖에 없는 것
  • 하나의 클래스 내에 내부 구현된 접근자와 수정자가 많다면, 코드중복이 발생할 확률이 높고, 변경에 취약하다는 문제점들을 가진다

데이터 중심 설계의 문제점

  • 본질적으로 너무 이른 시기에 데이터에 대해 결정하도록 강요한다
  • 협력이라는 문맥을 고려하지 않고 객체를 고립시킨채 오퍼레이션을 결정한다
  • 데이터 중심 설계 방식에 익숙한 개발자들은 절차적 프로그래밍 방식을 따른다
  • 이러한 방식은 접근자와 수정자가 public속성과 큰 차리가 없기 때문에 캡슐화는 무너진다

이 단원에서는 지금까지 설계하는 방식이 절차적프로그래밍을 따르고 자주 사용하는 get과 set 메서드가 왜 완벽하게 캡슐화를 시킬 수 없는지 예를 들어 이해할 수 있는 단원이다. 핵심적인 내용은 같은데 다양한 관점에서 바라보면서 이해가 더 깊게 되는 것 같다.