[Clean Code] 11장 시스템 본문

프로그래밍/클린코드

[Clean Code] 11장 시스템

디유비 2020. 6. 8. 10:13

- 시스템 제작과 시스템 사용을 분리하라

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