반응형
Notice
Recent Posts
Recent Comments
Link
- Today
- Total
04-13 19:36
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- SQL
- rest api
- Optional
- tapply
- sigmoid
- 연산자
- 시각화
- 티스토리챌린지
- r
- substr
- ios
- 오블완
- ReLU
- Python
- decode
- 명령어
- scheduledTimer
- Observable
- HTTP
- barplot
- 딥러닝
- SWIFT
- swiftUI
- Linux
- cocoapods
- deeplearning
- MVC
- rxswift
- struct
- Request
Archives
iOS 개발 기록 블로그
'SOLID 원칙' 이란? (쉬운 설명 포함) 본문
반응형
SOLID 원칙이란 아래 다섯가지 원칙들의 앞글자를 따서 만든 용어를 말합니다.
- 단일 책임 원칙 (Single Responsibility Principle - SRP): 이 원칙은 하나의 클래스나 모듈은 단 하나의 주요한 책임을 가져야 한다는 뜻이에요. 예를 들어, 만약 우리가 과일을 판매하는 가게에서 일한다면, 과일을 팔고 가격을 계산하는 것이 우리의 책임입니다. 그런데 이 외에도 고객 정보를 관리한다거나 배송을 담당한다면 이 원칙에 어긋날 수 있겠죠.
- 개방/폐쇄 원칙 (Open/Closed Principle - OCP): 이 원칙은 코드를 수정하지 않고도 새로운 기능을 추가할 수 있도록 해야 한다는 원칙이에요. 기존 코드를 바꾸지 않고도 새로운 부분을 확장하거나 변경할 수 있으면 유용하겠죠.
- 리스코프 치환 원칙 (Liskov Substitution Principle - LSP): 이 원칙은 자식 클래스는 언제나 부모 클래스를 대체할 수 있어야 한다는 뜻이에요. 간단히 말해, 어떤 클래스가 다른 클래스의 기능을 잘못 대체하거나 덮어쓰면 안 된다는 것이죠.
- 인터페이스 분리 원칙 (Interface Segregation Principle - ISP): 이 원칙은 한 클래스가 자신이 사용하지 않는 인터페이스는 구현하면 안 된다는 것입니다. 필요한 기능만 인터페이스로 분리해서 사용하면 코드를 더 깔끔하게 유지할 수 있어요.
- 의존관계 역전 원칙 (Dependency Inversion Principle - DIP): 이 원칙은 상위 수준의 모듈은 하위 수준의 모듈에 의존해서는 안 되며, 양쪽 모듈 모두 추상화에 의존해야 한다는 것입니다. 즉, 중요한 것은 어떤 클래스가 아니라 인터페이스나 추상화에 의존하는 것이 중요하다는 원칙이에요.
아래는 8살 아이도 알아들을 수 있는 더 쉬운 설명입니다.
- 하나만 해요 (단일 책임 원칙 - SRP): 하나의 친구가 여러 가지 일을 하지 않아요. 한 친구는 한 가지 중요한 일만 할 수 있어요. 예를 들어, 공부하고 놀이를 하는 친구가 따로 있어요.
- 새로운 걸 넣고 기존 것은 건들이지 마요 (개방/폐쇄 원칙 - OCP): 새로운 장난감을 넣을 때, 예전에 있던 장난감은 바꾸지 않아요. 새 장난감을 추가할 때 예전 장난감을 망가뜨리지 않아요.
- 똑같은 일을 똑같은 방식으로 해요 (리스코프 치환 원칙 - LSP): 만약 같은 일을 하는 동물 친구가 있다면, 그 친구들은 서로 비슷한 방법으로 일을 해요. 예를 들어, 비행기와 헬리콥터는 비슷한 방법으로 하늘을 날아다녀요.
- 필요한 일만 받아들여요 (인터페이스 분리 원칙 - ISP): 친구끼리 장난감을 나누는데, 서로 필요한 것만 주고 받아요. 필요하지 않은 장난감은 주고 받지 않아요.
- 중요한 건 빼먹지 마요 (의존관계 역전 원칙 - DIP): 친구들끼리 놀 때, 중요한 건 친구 이름이 아니라 놀이를 하는 방법이에요. 중요한 건 놀이 방법을 따르는 거에요.
반응형
'기타' 카테고리의 다른 글
MDN의 HTTP 자료 정리 (개요) (2) | 2024.11.16 |
---|---|
GitKraken 에러: Fetch failed for 'origin' 해결 방법 (2) | 2024.11.14 |
시간복잡도(Big-O 표기법)에 관하여 (0) | 2022.07.02 |
애자일(Agile) 방법론을 내 경험을 바탕으로 다시 이해하며 (0) | 2022.04.22 |
2021 크리스마스 에버랜드 판다 (예약방법, 지도) (0) | 2021.12.26 |