Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- 백엔드기초
- java
- 네트워크
- AbstractAggregateRoot
- 클린코드
- 백엔드개발자
- SnowFalke
- 백엔드
- redis
- DEVIEW2023
- interceptor
- Spring Boot
- spring event
- 보안
- 백엔드개발
- 성능최적화
- CS
- devops
- http
- 캐시
- 인증
- JPA
- 프론트엔드
- 웹개발
- Spring
- 데이터베이스
- 세션
- 인프라
- 웹성능최적화
- db
Archives
- Today
- Total
이것저것 개발기록
"유지보수 지옥에서 탈출하기" 객체지향 설계의 5가지 원칙: SOLID 본문
"기능 하나 고쳤는데 왜 다른 곳에서 에러가 날까요?"
변화에 유연하고 확장이 쉬운 코드를 만드는 5가지 핵심 원칙, SOLID를 주니어의 시각에서 쉽게 정리했습니다.
1. SOLID 원칙이란?
로버트 마틴이 명명한 객체지향 설계의 5대 원칙입니다. 이 원칙들을 잘 지키면 코드의 가독성이 좋아지고, 변경 사항이 생겼을 때 수정해야 할 범위가 최소화됩니다.
2. 5가지 원칙 핵심 요약
- SRP (단일 책임 원칙): 한 클래스는 하나의 책임만 가져야 합니다. 클래스가 변경되는 이유는 단 하나여야 합니다.
- OCP (개방-폐쇄 원칙): 확장에는 열려 있어야 하고, 수정에는 닫혀 있어야 합니다. 기존 코드를 고치지 않고 기능을 추가할 수 있어야 합니다.
- LSP (리스코프 치환 원칙): 자식 클래스는 언제나 부모 클래스를 대체할 수 있어야 합니다. 다형성의 규칙을 지키라는 뜻입니다.
- ISP (인터페이스 분리 원칙): 자신이 사용하지 않는 메서드에 의존하도록 강제해서는 안 됩니다. 큰 인터페이스보다는 구체적인 여러 개의 인터페이스가 낫습니다.
- DIP (의존관계 역전 원칙): 추상화에 의존해야지, 구체화에 의존하면 안 됩니다. 구현 클래스가 아니라 인터페이스를 바라보게 하세요.
💡 실무 노트
실무에서 SOLID 원칙을 100% 완벽하게 지키는 것은 매우 어렵습니다. 하지만 OCP와 DIP만 제대로 이해하고 적용해도 코드의 질이 완전히 달라집니다.
팁: 새로운 기능을 추가할 때 기존에 잘 돌아가던 if-else 문을 계속 수정하고 있다면 OCP 위반일 가능성이 높습니다. 이때 인터페이스를 추출하고 다형성을 활용해 보세요. 처음에는 코드가 복잡해지는 것 같아도, 한 달 뒤의 내가 코드를 수정할 때 과거의 나에게 감사하게 될 것입니다.
"원칙은 도구일 뿐입니다. 상황에 맞게 유연하게 적용하는 감각을 기르세요."
'IT 이야기' 카테고리의 다른 글
| "데이터가 자꾸 꼬여요" 동시성 문제를 해결하는 낙관적 락과 비관적 락 (0) | 2026.01.08 |
|---|---|
| "주소창에 엔터를 친 후" 브라우저가 화면을 그리는 5단계 (0) | 2026.01.08 |
| "DB 연결이 너무 느리다면?" 커넥션 풀(Connection Pool)의 원리 (0) | 2026.01.07 |
| "웹이 왜 이렇게 빨라졌지?" HTTP/1.1과 HTTP/2의 결정적 차이 (0) | 2026.01.06 |
| "서버의 병목을 해결하는 해결사" 메시지 큐(Message Queue) 이해하기 (0) | 2026.01.06 |