응집도와 결합도는 소프트웨어 품질을 결정 짓는 요소이다. 대다수의 사람들은 코드를 작성할때 "응집도" 와 "결합도" 를 생각하지 않은채 관성적으로 코드를 적고는 한다. 응집도와 결합도는 무슨 뜻일까? 일단, 이 개념을 이해하기 위해서 알고 있어야 할 선행지식이 있다. 불안정한 부분과 안전한 부분의 분리 바로 "불안정한 부분" 과 "더 안전한 부분" 을 분리해 내는 능력이 필요하다. 예를 들어 아래와 같은 객체가 존재한다고 해보자. Address 는 모든 변수가 public 하게 열려있다. 우리는 앞으로 Public 하다는건 자신의 내부 속사정을 공개한 객체 취급을 할 것이다. 외부에서 이를 어떻게 사용할까? 위와 같이 사용할 수 있을 것이다. 위와 같이 사용했을때 어떤 문제가 발생할 수 있을까? 아니 "..