도구는 그 용도에 맞게 사용해야 한다. 요리로 비유하자면 객체 지향의 4대 특성은 요리를 만들기 위한 불 • 물 • 칼 등 주방 기구라고 할 수 있다. 물의 수압을 높이면 과일이나 책소를 자를 수 있다. 가스레인지 대신 맛동산 한 봉지의 열량으로 대략 7리터의 물을 100도까지 끓일 수 있다. 냄비 대신 비닐 봉지에 물을 담아 물을 끓일 수도 있다. 그리고 젓가락 대신 나뭇가지를 잘라 젓가락 대용으로 쓸 수도 있다. 하지만 과일이나 채소를 자를때는 칼을 쓰는 것이 가장 좋은 방법이고, 음식을 조리할 때는 가스레인지와 냄비가 제격이다.

좋은 도구는 있어도 올바르게 사용하지 않으면 요리를 만드는 작업은 고될수 밖에 없다. 도구를 올바르게 사용하는 법이 있는 것처럼 객체 지향의 특성을 올바르게 사용하는 방법, 즉 객체 지향 언어를 이용해 객체 지향 프로그램을 올바르게 설계해 나가는 방법이나 원칙이 존재 할까?

SOLID

SOLID는 아래 5가지 원칙의 앞 머리 알파벳을 따서 부르는 이름이다.

이러한 원칙들은 응집도를 높이고(High Cohesion), 결합도를 낮춰라(Loose Cupling)는 고전 원칙을 객체 지향의 관점에서 재정립 한 것이라고 할 수 있다.

SOLID는 객체 지향 프로그램을 구성하는 속성, 메소드 ,클래스 ,객체, 패키지, 모듈, 라이브러리, 프레임워크, 아키텍처 등 다양한 곳에 다양하게 적용되는 것이기에 보는 사람의 관점에 따라 다르게 해석될 수 있는 소지가 있다.

SOLID는 개념이지만 우리가 만드는 소프트웨어에 녹여 내야하는 개념이다. SOLID를 작 노여낸 소프트웨어는 그렇지 않은 소프트웨어에 비해 상대적으로 이해하기 쉽거, 리팩터링과 유지보수가 수월할 뿐만 아니라 논리적으로 정연하다.