반응형
Notice
Recent Posts
Recent Comments
Link
- Today
- Total
07-08 00:00
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- grep
- NVL
- 명령어
- ios
- substr
- cocoapods
- Optional
- sigmoid
- Python
- 시각화
- 연산자
- trunc
- barplot
- MVC
- Linux
- ReLU
- Observable
- tapply
- 딥러닝
- SWIFT
- r
- deeplearning
- SQL
- rxswift
- struct
- delegate
- scheduledTimer
- Upper
- decode
- swiftUI
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): 친구들끼리 놀 때, 중요한 건 친구 이름이 아니라 놀이를 하는 방법이에요. 중요한 건 놀이 방법을 따르는 거에요.
반응형
'기타' 카테고리의 다른 글
시간복잡도(Big-O 표기법)에 관하여 (0) | 2022.07.02 |
---|---|
애자일(Agile) 방법론을 내 경험을 바탕으로 다시 이해하며 (0) | 2022.04.22 |
2021 크리스마스 에버랜드 판다 (예약방법, 지도) (0) | 2021.12.26 |
NFT의 개념과 메타버스 그리고 블록체인(가상화폐) (0) | 2021.11.05 |