한번 읽고 두번 깨닫는 객체지향 프로그래밍 미리보기
책이 2019년 1월말에 출간 예정인데 블로그 독자들에게 미리보기를 제공합니다.
보시고 댓글과 질문 많이 남겨주시면 감사합니다. +.+
4) 관계의 의존성은 낮게 기능의 집중도는 높게
여기까지 읽었다면 이렇게 생각할 수 있겠다. 기능 구현에만 집착하면 유연성이 훼손 될 수도 있고, 유연성이 어떤 건지도 대략 알겠다. 그렇다면 유연한 소프트웨어를 개발하려면 구체적으로 어떻게 해야 할까? 다행히 좋은 소프트웨어를 만드는 기준이 되는 원칙을 간결하게 한 문장, 두 가지 권고사항으로 정리할 수 있다.
‘관계의 의존성은 낮게, 기능의 집중도는 높게’
이것은 ‘응집도는 높게, 결합도는 낮게’와 같은 뜻이다.’ 정보처리 기사 이론을 공부할 때, 유독 객체지향이란 단어와 ‘응집도는 높게, 결합도는 낮게’라는 용어가 눈에 안 들어왔다. 그래서 표현을 더 직관적으로 수정하면서 아래처럼 순서도 바꿔보았다.
※ 높은 응집도(기능의 집중도)와 낮은 결합도(관계의 의존성) → 낮은 결합도, 높은 응집도
저자가 경험해 보니 객체지향에서는 기능보다 관계가 더 중요하다. 관계의 중요성은 <2장 고정관념의 전환>에서 설명하겠다. 아무튼 우리는 소프트웨어를 개발할 때 위의 두 가지 원칙만 충실히 지키면 된다. 그러면 최대한 소프트웨어 유연성을 얻을 수 있다.
한편 기능의 집중도가 높다는 말은, 어떤 모듈이 되도록 하나의 작업만 하도록 만들어졌다는 뜻이다. 관계의 의존성이 낮다는 말은, 모듈의 기능을 수행하기 위해 다른 모듈에 얼마나 적게 의존하느냐다.
공장을 예로 들어보겠다. 공장은 제작, 포장, 테스트, 관리, 재고 관리 등으로 분업화가 잘 되어 있어야 한다. 그러나 한 직원의 업무가 포장을 했다가 테스트도 했다가 때로는 짐도 나르고, 상사의 개인적인 심부름도 했다가 수시로 공장 청소까지 한다면, 산만해서 제대로 일하기 어려울 것이다. 따라서 한 직원은 되도록 한 가지 일만 하면서 기능의 집중도를 높여야 하고, 쓸데없는 일에 의존하는 경우는 낮춰야 한다. 즉 관계의 의존성과 기능의 집중도 사이에는 높은 상관관계가 있다. 관계의 의존성이 낮으면 저절로 기능의 집중도가 높아진다. 기능의 집중도가 높으면 관계의 의존성이 낮아진다.
객체지향으로 개발할 때 역시, 소프트웨어의 모듈은 하나의 일만 잘 수행해야 하고, 하나의 모듈이 다른 모듈에 의존하는 경우를 최대한 줄여야 한다.
'길게 쓰기 > 객체지향의 탄생 (공식)' 카테고리의 다른 글
객체지향 생각의 도구1-한두깨 객체지향 프로그래밍 미리보기 (0) | 2019.01.22 |
---|---|
객체지향 생각의 도구-한두깨 객체지향 프로그래밍 미리보기 (0) | 2019.01.17 |
정의와 목표의 전환2-한두깨 객체지향 프로그래밍 미리보기 (0) | 2019.01.10 |
정의와 목표의 전환-한두깨 객체지향 프로그래밍 미리보기 (4) | 2019.01.07 |
책이 곧 나옵니다. (한번 읽으면 두번 깨닫는 객체지향 프로그래밍) (5) | 2018.12.25 |