[Clean Code] 11장 시스템 본문
- 시스템 제작과 시스템 사용을 분리하라
public Service getService()
{
if (service == null)
{
service = new MyServiceImpl(...)
}
return service;
}
위 코드는 초기화 지연(Lazy Initialization), 계산 지연(Lazy Evaluation)이라는 기법이다.
장 : 실제로 필요할 때까지 객체를 생성하지 않음 (부하 감소), 어떤 경우에도 null 포인터를 반환하지 않음
단 : getService 함수가 MyServiceImpl과 생성자 인수에 의존한다. 테스트시에 테스트 전용 객체가 필요하다. 런타임 로직에 객체 생성 로직이 있기 때문에 service가 null인 경우와 null이 아닌 경우를 모두 테스트해야 한다.
: Main 분리 - 생성과 관련한 코드는 모두 main이나 main이 호출하는 모듈로 옮긴다.
- 객체를 생성한 후 애플리케이션에 넘기면, 애플리케이션은 객체를 사용만 한다.
: 팩토리 -...
: 의존성 주입 -...
- 확장
: 코드 수준에서 시스템을 조정하고 확장하기 쉽게 만든다.
- 테스트 주도 시스템 아키텍처 구축
:
- 의사 결정을 최적화하라
: 모듈을 나누고 책임을 분리하면 낮은 레벨에서의 관리와 결정이 가능해진다.
- 명백한 가치가 있을 때 표준을 현명하게 사용하라
- 시스템은 도메인 특화 언어가 필요하다
결론
- 시스템 역시 깨끗해야 한다.
- 모든 추상화 단계에서 의도가 명확해야 한다.
'프로그래밍 > 클린코드' 카테고리의 다른 글
[Clean Code] 13장 동시성(Concurrency) (0) | 2020.06.08 |
---|---|
[Clean Code] 12장 창발성 (0) | 2020.06.08 |
[Clean Code] 10장 클래스 (0) | 2020.06.05 |
[Clean Code] 9장 유닛 테스트 (0) | 2020.06.05 |
[Clean Code] 8장 경계 (0) | 2020.06.04 |
Comments
Copyright ⓒ dub All Rights Reserved.