클래스(3)

마무리, 시스템

책너두 5기 21일차

로버트 C. 마틴의 클린코드 p.189 ~ p.197

내용 정리

10. 클래스

변경하기 쉬운 클래스

변경으로부터 격리

객체 지향 프로그래밍에는 구체적인(concrete) 클래스와 추상(abstract) 클래스가 있다. 상세한 구현(코드)을 포함하는 것과 개념만 포함하는 것의 차이이다. 상세한 구현에 의존하는 클라이언트 클래스는 구현이 바뀌면 위험하므로 인터페이스와 추상 클래스를 사용해 구현이 미치는 영향을 격리한다.

시스템의 결합도를 낮추면 유연성과 재사용성도 더욱 높아진다. 이는 각 시스템 요소가 다른 요소로부터, 변경으로부터 잘 격리되어 있다는 의미다.

11. 시스템

도시를 세운다면?

도시에는 큰 그림을 그리는 사람들도 있으며 작은 사항에 집중하는 사람들도 있다. 한 사람의 힘으로는 직접 관리할 수 없다. 도시가 돌아가는 이유는 적절한 추상화와 모듈화 때문이다. 시스템도 마찬가지다.

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

제작(constructuin)사용(use)은 다르다. 시작 단계는 모든 애플레키에션이 풀어야 할 관심사(concern)이다. 관심사 분리는 이 분야에서 가장 오래되고 중요한 설계 기법 중 하나다.

체계적이고 탄탄한 시스템을 만들고 싶다면 흔히 쓰는 좀스럽고 손쉬운 기법으로 모듈성을 깨서는 절대 안된다. 설정 논리는 일반 실행 논리와 분리해여 모듈성이 높아진다.

읽고 나서

단원은 바뀌고 있지만 관통하는 교훈은 똑같은 느낌이다. 작게, 하나씩 쪼개라.