CHAPTER 9 계층형 설계 II
계층형 설계 패턴
- 패턴 1: 직접구현
- 패턴 2: 추상화 벽
- 패턴 3: 작은 인터페이스
- 패턴 4: 편리한 계층
패턴 2: 추상화 벽
추상화의 벽(abstraction barrier)은 세부 구현을 감춘 함수로 이루어진 계층
팀 간 책임을 명확하게 나누는 것
세부적인 것을 감추는 것은 대칭적입니다
추상화의 벽이 잘작동 하면 세부사항 변경에 다른 팀은 알 필요가 없다
추상화 벽이 있으면 구체적인 것을 신경 쓰지 않아도 됩니다
추상화 벽은 필요하지 않은 것은 무시할 수 있도록 간접적인 단계를 만듭니다
추상화 벽은 언제 사용하면 좋을까요?
- 쉽게 구현을 바꾸기 위해
- 코드를 읽고 쓰기 쉽게 만들기 위해
- 팀 간에 조율해야 할 것을 줄이기 위해
- 주어진 문제에 집중하기 위해
패턴 3: 작은 인터페이스
- 추상화 벽에 만든 함수는 인터페이스라고 생각 할 수 있다
- 함수 목적에 맞는 계층이 어디인지 찾는 감각을 기르는 것이 가장 중요하다
패턴 4: 편리한 계층
편리한 계층(comfortable layer)은 계층을 추가하는 것이 좋은 이유를 찾는 것
지금 편리한지 생각하고 편리하면 설계를 멈춘다
그래프로 알 수 있는 코드에 대한 정보는 무엇이 있을까요?
호출 그래프로 알수 있는 세 가지 비기능적 요구사항
- 유지보수성
- 테스트성
- 재사용성
그래프의 가장 위에 있는 코드가 고치기 가장 쉽습니다
아래에 있는 코드는 테스트가 중요합니다
아래에 있는 코드가 재사용하기 더 좋습니다
요약: 그래프가 코드에 대해 알려주는 것
- 유지보수성
- 위로 연결된 것이 적은 함수가 바꾸기 쉽다
- 테스트성
- 위쪽으로 많이 연결된 함수를 테스트하는 것이 더 가치 있다
- 재사용성
- 아래쪽에 함수가 적을수록 더 재사용하기 좋다
낮은 수준의 단계로 함수를 빼내면 재사용성이 더 높아진다