Clean Code 제 10장. 시스템

최대 1 분 소요

시스템에 대한 이야기.

test

결론

  • 단순하고 분리된 아키텍쳐를 그리자.
  • 그리고 확장하자. 처음부터 멋진 아키텍쳐는 없다.

시스템 제작과 확장

복잡성은 죽음이다. 개발에게서 생기를 앗아가며, 제품을 계획하고 제작하고 테스트하기 어렵게 만든다.

거대한 도시를 어떻게 유지하는가? 우리는 도시에 대해 속속들이 다 알지 못한다. 다만 도시의 여러 조직들이 유기적으로 소통하면서 유지되는 것을 알고 있다.

시스템도 같다. 상세한 코드는 모르지만 체계적인 구조로 서로 협력하며 서비스를 유지한다. 체계적인 구조는 모듈성과 일관성을 유지해야 한다.

이번 chapter 는 일관성 있는 구조를 만들기 위한 몇가지 방법을 제안한다.

시스템 생성과 사용을 분리하는 방법.

  1. 생성과 관련된 코드는 모두 main 이나 main이 호출하는 모듈로 옮기자.
  2. 객체가 생성되는 시점을 어플리케이션이 결정할 필요가 있을 때 Factory 패턴을 활용하자.
  3. 사용과 제작을 분리하면서 초기화/계산 지연의 장점을 사용할 수 있는 의존성 주입을 사용하자

확장

처음부터 올바르게 시스템을 만들 수 있다는 믿음은 미신이다. 소프트웨어 시스템은 수명이 짧다.는 본질로 인해 아키텍쳐의 점진적인 발전이 가능하다.

AOP

관심사의 분리는 중요하다. AOP 아래와 같이 3가지가 있다. (책에서는 존재 정도만 설명해준다.)

  1. 자바 프록시
  2. 순수 자바 AOP 프레임워크
  3. AspectJ