Stratified Design

계층형 설계(stratified design) 의 핵심은 변경 가능성에 따라 코드를 나누는 것 이다.

Clean Architecture 를 알고 있으면 아래 내용을 이해하는데 도움이 된다.

변경 가능성을 크게 3가지로 구분해보자.

  • 자주 바뀌는 것
  • 가끔 바뀌는 것
  • 자주 바뀌지 않는 것

자주 바뀌지 않는 것에는 프로그래밍 언어에 대한 기능 들을 배치하는게 좋다. 예를 들면 배열, 객체 등. 가끔 바뀌는 것은 도메인 규칙 을 정의해둔다. 자주 바뀌는 것은 Facade 를 생각하면 된다. 즉, 비지니스 규칙 을 정의한다.

이러한 계층형 설계의 장점은 테스트, 유지보수, 재사용이 쉽다는 것이다.

References

  • Grokking Simplicity / Eric Normand / Manning