객체지향적 개발에 있어 SOLID라는 중요한 원칙이 있다. 지키지 않아도 개발을 할 수는 있지만, 지키며 개발한다면 더욱 효율적인 개발과 유지보수가 가능해진다.
사실, “굉장히”라는 표현을 써도 과하지 않다. 따라서, 이 원칙을 공부하고, 깨닫고, 항상 생각하며 새 기능을 만들고 수정하는것을 권장한다. 이 원칙을 이해할 즈음이면, 우리는 “코더 - 기능 구현자” 가 아닌 “소프트웨어 프로그래머”가 되어있을 것이다.
SOLID는 단어 그대로 “단단한, 고체”라는 뜻은 아니고, 다섯가지 중요 원칙의 앞글자를 따서 만든 축약어이다. 각 글자의 의미는 아래와 같다. 이 부분만 보고 무슨말인지 이해를 못한다면, 그건 정상이다.
- S: Single Responsibility Principle (단일 책임 원칙)
- 하나의 클래스는, 하나의 변경 이유에 대해서만 책임이 있어야 한다.
- O: Open-Closed Principle (개방-폐쇄 원칙)
- 클래스는 확장에는 열려있고, 수정에는 닫혀있어야 한다.
- L: Liskov Substitution Principle (리스코프 치환 원칙)
- 부모 클래스를 자식 클래스로 치환해도 문제가 없어야 한다.
- I: Interface Segregation Principle (인터페이스 분리 원칙)
- 인터페이스는 역할 단위로 분리되어있어야 한다.
- D: Dependency Inversion Principle (의존성 역전 원칙)
- 클래스 구현체와 사용체는 추상화에 의해 의존성이 역전되어야 한다.