Clean Code 제 10장. 시스템
시스템에 대한 이야기.
결론
- 단순하고 분리된 아키텍쳐를 그리자.
- 그리고 확장하자. 처음부터 멋진 아키텍쳐는 없다.
시스템 제작과 확장
복잡성은 죽음이다. 개발에게서 생기를 앗아가며, 제품을 계획하고 제작하고 테스트하기 어렵게 만든다.
거대한 도시를 어떻게 유지하는가? 우리는 도시에 대해 속속들이 다 알지 못한다. 다만 도시의 여러 조직들이 유기적으로 소통하면서 유지되는 것을 알고 있다.
시스템도 같다. 상세한 코드는 모르지만 체계적인 구조로 서로 협력하며 서비스를 유지한다. 체계적인 구조는 모듈성과 일관성을 유지해야 한다.
이번 chapter 는 일관성 있는 구조를 만들기 위한 몇가지 방법을 제안한다.
시스템 생성과 사용을 분리하는 방법.
- 생성과 관련된 코드는 모두 main 이나 main이 호출하는 모듈로 옮기자.
- 객체가 생성되는 시점을 어플리케이션이 결정할 필요가 있을 때 Factory 패턴을 활용하자.
- 사용과 제작을 분리하면서 초기화/계산 지연의 장점을 사용할 수 있는 의존성 주입을 사용하자
확장
처음부터 올바르게 시스템을 만들 수 있다는 믿음은 미신이다. 소프트웨어 시스템은 수명이 짧다.
는 본질로 인해 아키텍쳐의 점진적인 발전이 가능하다.
AOP
관심사의 분리는 중요하다. AOP 아래와 같이 3가지가 있다. (책에서는 존재 정도만 설명해준다.)
- 자바 프록시
- 순수 자바 AOP 프레임워크
- AspectJ