이것저것 개발기록

"유지보수 지옥에서 탈출하기" 객체지향 설계의 5가지 원칙: SOLID 본문

IT 이야기

"유지보수 지옥에서 탈출하기" 객체지향 설계의 5가지 원칙: SOLID

Garam Kim 2026. 1. 7. 12:00

"기능 하나 고쳤는데 왜 다른 곳에서 에러가 날까요?"
변화에 유연하고 확장이 쉬운 코드를 만드는 5가지 핵심 원칙, SOLID를 주니어의 시각에서 쉽게 정리했습니다.

1. SOLID 원칙이란?

로버트 마틴이 명명한 객체지향 설계의 5대 원칙입니다. 이 원칙들을 잘 지키면 코드의 가독성이 좋아지고, 변경 사항이 생겼을 때 수정해야 할 범위가 최소화됩니다.

2. 5가지 원칙 핵심 요약

  • SRP (단일 책임 원칙): 한 클래스는 하나의 책임만 가져야 합니다. 클래스가 변경되는 이유는 단 하나여야 합니다.
  • OCP (개방-폐쇄 원칙): 확장에는 열려 있어야 하고, 수정에는 닫혀 있어야 합니다. 기존 코드를 고치지 않고 기능을 추가할 수 있어야 합니다.
  • LSP (리스코프 치환 원칙): 자식 클래스는 언제나 부모 클래스를 대체할 수 있어야 합니다. 다형성의 규칙을 지키라는 뜻입니다.
  • ISP (인터페이스 분리 원칙): 자신이 사용하지 않는 메서드에 의존하도록 강제해서는 안 됩니다. 큰 인터페이스보다는 구체적인 여러 개의 인터페이스가 낫습니다.
  • DIP (의존관계 역전 원칙): 추상화에 의존해야지, 구체화에 의존하면 안 됩니다. 구현 클래스가 아니라 인터페이스를 바라보게 하세요.

💡 실무 노트

실무에서 SOLID 원칙을 100% 완벽하게 지키는 것은 매우 어렵습니다. 하지만 OCPDIP만 제대로 이해하고 적용해도 코드의 질이 완전히 달라집니다.

팁: 새로운 기능을 추가할 때 기존에 잘 돌아가던 if-else 문을 계속 수정하고 있다면 OCP 위반일 가능성이 높습니다. 이때 인터페이스를 추출하고 다형성을 활용해 보세요. 처음에는 코드가 복잡해지는 것 같아도, 한 달 뒤의 내가 코드를 수정할 때 과거의 나에게 감사하게 될 것입니다.

"원칙은 도구일 뿐입니다. 상황에 맞게 유연하게 적용하는 감각을 기르세요."