CHAPTER 9 계층형 설계 II

CHAPTER 9 계층형 설계 II

계층형 설계 패턴

  • 패턴 1: 직접구현
  • 패턴 2: 추상화 벽
  • 패턴 3: 작은 인터페이스
  • 패턴 4: 편리한 계층

패턴 2: 추상화 벽

추상화의 벽(abstraction barrier)은 세부 구현을 감춘 함수로 이루어진 계층
팀 간 책임을 명확하게 나누는 것

세부적인 것을 감추는 것은 대칭적입니다

추상화의 벽이 잘작동 하면 세부사항 변경에 다른 팀은 알 필요가 없다

추상화 벽이 있으면 구체적인 것을 신경 쓰지 않아도 됩니다

추상화 벽은 필요하지 않은 것은 무시할 수 있도록 간접적인 단계를 만듭니다

추상화 벽은 언제 사용하면 좋을까요?

  • 쉽게 구현을 바꾸기 위해
  • 코드를 읽고 쓰기 쉽게 만들기 위해
  • 팀 간에 조율해야 할 것을 줄이기 위해
  • 주어진 문제에 집중하기 위해

패턴 3: 작은 인터페이스

  • 추상화 벽에 만든 함수는 인터페이스라고 생각 할 수 있다
  • 함수 목적에 맞는 계층이 어디인지 찾는 감각을 기르는 것이 가장 중요하다

패턴 4: 편리한 계층

편리한 계층(comfortable layer)은 계층을 추가하는 것이 좋은 이유를 찾는 것

지금 편리한지 생각하고 편리하면 설계를 멈춘다

그래프로 알 수 있는 코드에 대한 정보는 무엇이 있을까요?

호출 그래프로 알수 있는 세 가지 비기능적 요구사항

  • 유지보수성
  • 테스트성
  • 재사용성

그래프의 가장 위에 있는 코드가 고치기 가장 쉽습니다

아래에 있는 코드는 테스트가 중요합니다

아래에 있는 코드가 재사용하기 더 좋습니다

요약: 그래프가 코드에 대해 알려주는 것

  • 유지보수성
    • 위로 연결된 것이 적은 함수가 바꾸기 쉽다
  • 테스트성
    • 위쪽으로 많이 연결된 함수를 테스트하는 것이 더 가치 있다
  • 재사용성
    • 아래쪽에 함수가 적을수록 더 재사용하기 좋다

낮은 수준의 단계로 함수를 빼내면 재사용성이 더 높아진다

참조