새로운 내용을 공부할 때
새로운 내용의 공부를 시작할 때 용어의 정의를 이해하지 못하거나 정확하게 알지 못한다면 그 용어가 포함된 문장을 이해하지 못합니다.
작은 단어 하나가 내용을 이해하지 못하게 하기 때문에 용어를 정확하게 이해하는 것이 중요합니다.

1 분 소요

책 읽기전

클래스의 분리

지금은 관심사가 다른 경우 관심사 단위로 메소드를 분리하는 메소드 추출을 사용하여 관심사를 분리했습니다.

관심사를 분리하는 이유는 관심사의 요구사항이 주기, 시기, 환경에 따라 다르기 때문에 서로 영향이 없도록 하기 위해서 입니다.

분리를 하여 서로 영향이 없지만 단점은 확장하기 어렵습니다.

교체를 하려면 상속을 하거나, 강제로 상속을 하게 만드는 추상 메소드를 통해서 확장을 하다보면 기능 확장마다 새로운 클래스를 만들어야하며 더 큰 문제는 상위 클래스와 강한 결합으로 커플링 되어있기에 상위 클래스의 변경이 생길 때 하위 클래스에도 큰 영향이 생기게 됩니다.

그래서 우리가 추구하고자 했던 관심사 분리를 하기 위한 목적이 상속으로는 제한되기에 클래스를 분리해보자는 의미로 받아들여집니다.

높은 응집도

응집도가 높다는 것

응집은 단순히 참조가 뭉쳐있는 것이 아니라 하나의 모듈이 얼마나 논리적으로 밀접한 역할을 수행하는 강도가 높다는 의미다.

높은 응집도를 가진다는 건 관심사가 객체 내에 있기에 클라이언트 요구사항으로 코드를 변경하면 여러 군데 모듈을 수정하는게 아니라 응집도가 높은 하나의 모듈만 수정하면 되기 때문에 유지보수나 확장할 때 유리합니다.

낮은 응집도

만약 반대로 응집도가 낮다면?

  1. 모듈의 일부분에만 변경이 일어나도 된다면, 모듈 전체에서 어떤 부분이 바뀌어야 하는지 파악해야합니다.
  2. 그 변경으로 인해 바뀌지 않은 부분은 다른 영향이 미치지 않는지 확인해야하는 부담이 있습니다

예를 들어

A관심사 -> B관심사 -> C관심사가 하나의 로직 안에 들어있다면

B관심사를 수정했지만 그 이후 로직에 C관심사에 영향이 없는지, 다른 로직에 영향이 없는지 확인해야합니다.

요구사항은 명확하다.

비즈니스 로직, 애플리케이션 기술, 라이브러리 등이 한꺼번에 변경되는 것이 아닙니다.

비즈니스 로직에 대한 요구사항은 비즈니스 로직만 변경하거나 확장하면 되기에 관심사를 분리하여 서로 영향이 없도록 해야 불필요한 영향 확인을 할 필요가 없습니다.

낮은 결합도

낮은 결합도는 높은 응집도보다 더 민감합니다.

결합도란?

하나의 오브젝트가 변경이 일어날 때 관계를 맺고 있는 다른 오브젝트에서 변화를 요구하는 정도를 말합니다.

결합도가 낮다는게 왜 장점일까?

하나의 변경이 발생할 때 톱니바퀴가 도는 듯 다른 모듈과 객체로 변경에 대한 요구가 전파되지 않는 것을 의미합니다.

결합도가 낮을 수록 하나의 변경이 다른 클래스에 영향이 없게 되고 추가로 다른 클래스에 영향이 없다는 것은 변경된 모듈 내에서 테스트를 진행하면 된다는 의미입니다.

제어의 역전

제어의 역전은 프로그램 제어 흐름 구조가 바뀌는 것을 말합니다.

오브젝트가 능동적으로 자신이 사용할 클래스의 오브젝트를 생성하고 제어하는 것을 말합니다.

제어의 역전은 수동적으로 자기가 사용할 클래스의 오브젝트를 스스로 선택하지 않는 것을 말합니다. 또한 자기가 어떻게 만들어지고 사용되는지 알 수 없다

프레임워크

프레임 워크는 이미 만들어진 환경에 필요한 서비스 로직을 작성하면 서비스 로직의 제어권을 넘기는 방법이다

태그:

카테고리:

업데이트:

댓글남기기