오브젝트 1

김주빈·2022년 2월 12일
0

오브젝트

목록 보기
1/1
post-thumbnail

모든 소프트 웨어 모듈에는 세가지 목적이 있다.
첫 번째 목적은 재대로 동작하는 것
두 번째 목적은 변경을 위해 존재하는 것
세 번째 목적은 코드를 읽는 사람과 의사소통하는 것
- 클린 소프트웨어: 에자일 원칙과 패턴, 그리고 실천 방법, 로버트 마틴

오브젝트 1장

주제

객체 사이의 결합도를 낮춰 변경이 용이한 설계를 만드는 것

설계를 어렵게 만드는 것은 의존성 이다.
불필요한 의존성을 제거함으로 객체 사이의 결합도를 낮춰야한다.
결합도를 낮추는 방법은 세부사항을 내부로 감춰 캡슐화 하는 것이다.
캡슐화 하는 것은 객체의 자율성을 높이고 응집도 높은 객체들의 공동체를 창조할 수 있게 한다

어떻게(how)가 아니라 무엇을(what)에 집중하라

키워드

의존성(dependency)

  • 객체들간의 협력

결합도(coupling)

  • 객체 사이의 의존성이 과한경우 결합도가 높다고 말한다.
  • 결합도가 높을수록 함께 변경될 확률도 높아지기에, 변경이 어려워진다.
  • 설계의 목표는 객체 사이의 결합도를 낮춰 변경이 용이한 설계를 만드는 것 이다.

자율성

  • 객체를 수동적인 존재가 아닌, 능동적인 존재로 만드는 것
  • 자율성을 높이다보면, 결합도가 올라갈수도 있다.

수동적인 Audience

// Theater class 내부
public void enter(Audience audience) {
  if(audience.getBag().hasInvitation()) {
    ...
  }
}

Theater 이 audience 의 가방에서 티켓을 찾는 것은 audience 가 수동적 이다.

자율적인 Audience

// Theater class 내부
public void enter(Audience audience) {
  audience.buy(ticket)
}

// Audience class 내부
public Long buy(Ticket ticket) {
  if(bag.hasInvitation()) {
    ...
  }
}

캡슐화(encapsulation)

  • 개념적이나 물리적으로 객체 내부의 세부적인 사항을 감추는 것
  • 변경하기 쉬운 객체를 만드는 것
    • 객체 내부로의 접근을 제한하면 객체와 객체 사이의 결합도를 낮출 수 있기 때문에 설계를 좀 더 쉽게 변경할 수 있게 된다.

응집도

  • 밀접하게 연관된 작업만 수행하고, 연관성 없는 작업은 다른 객체에게 위임하는 객체를 가리켜 응집도가 높다 라고 한다.
  • 응집도를 높히기 위해서는 객체 스스로 자신의 데이터를 책임져야 한다.
profile
프론트엔드 개발자 김 주빈 입니다.

0개의 댓글