반응형
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 | 31 |
Tags
- DispatchQueue
- TableView
- 원격 푸시
- AppTransportSecurity
- userdefaults
- entrypoint
- 진입점
- ios
- viewcontroller
- firebase
- 연산 프로퍼티
- UIButton
- IBOutlet
- 동시성프로그래밍
- OperationQueue
- property wrapper
- for-in
- Choosing Between Structures and Classes
- Remot Push
- uikit
- RunLoop
- weak
- 트레일링 클로저
- Understanding Swift Performance
- 후행 클로저
- CoreLocation
- IBOutletCollection
- tableViewCell
- SWiFT
- WWDC16
Archives
- Today
- Total
iOS 공부하는 감자
Day22) 객체지향 설계의 5가지 원칙 SOLID 본문
반응형
SOLID 원칙은 객체지향 설계에 있어서 더 좋은 아키텍처를 설계하기 위해 지켜지면 좋을 5가지 원칙을 앞 글자만 가져와서 나타낸 것이다.
SOLID는 다음의 약자이다.
- S (Single Responsibility Principle) : 단일 책임 원칙
- O (Open / Close Principle) : 개방/폐쇄 원칙
- L (Liscov Substitution Principle) : 리스코프 치환 원칙
- I (Interfate Segregation Principle) : 인터페이스 분리 원칙
- D (Dependency Inversion Principle) : 의존관계 역전 원칙
S (Single Responsibility Principle) : 단일 책임 원칙
- 클래스는 하나의 책임만 가져야 한다.
- 클래스의 수정 이유는 단 하나여야 한다.
- 동일한 책임이 여러 개의 클래스에 나뉘어 있으면 안된다.
- 하나의 클래스 내부에 협력관계가 여러 개 있는 것은 가능하다.
O (Open / Close Principle) : 개방/폐쇄 원칙
- 확장에는 열려있고, 변경에는 닫혀 있어야 한다.
- 기능을 추가할 때 기존 코드는 변경하지 않고 확장해야 한다.
L (Liscov Substitution Principle) : 리스코프 치환 원칙
- 부모 클래스는 자식 클래스로 대체 가능해야 한다.
- 부모 클래스의 자리에 자식 클래스를 대신 사용해도 문제없이 돌아가야 한다.
- 자식 클래스는 부모 클래스의 동작을 바꾸지 않는다.
I (Interfate Segregation Principle) : 인터페이스 분리 원칙
- 클래스 내에서 사용하지 않는 인터페이스는 구현하지 않는다.
- 클라이언트는 자신이 이용하지 않는 메서드에 의존하지 않아야 한다.
- 큰 덩어리의 인터페이스들을 구체적이고 작은 단위로 분리시킴으로써 클라이언트들이 꼭 필요한 메서드만 이용할 수 있도록 한다.
D (Dependency Inversion Principle) : 의존관계 역전 원칙
- 상위 모듈은 하위 모듈에 의존하면 안 된다.
- 상위, 하위 모듈은 모두 추상화에 의존해야 한다.
- 추상화는 세부 사항에 의존해서는 안된다. 세부사항이 추상화에 의존해야 한다.
+ 시간초과로 성공하지 못했던 알고리즘 문제를 Big-O와 해시 테이블 개념을 공부한 후 코드를 수정해서 통과했다.
그냥 별 생각 없이 사용하던 Dictionary가 해시 함수를 사용한다는 사실도 새로 알게 되었고, 요소의 크기가 커질수록 해시 테이블이 일반 배열에 비해 얼마나 빠르게 동작하는지 체감했다. (코드 실행 시간이 압도적으로 단축됨..!)
앞으로 알고리즘 문제를 풀 때 Dictionary를 잘 사용하면 아주 유용할 것 같아서 Day3의 내용을 조금 보완(?)했다.
반응형
'22 베이직 챌린지' 카테고리의 다른 글
Day21) 비트연산자, 이진 검색 알고리즘, sort 함수 작동방식 (0) | 2022.01.23 |
---|---|
Day20) Big-O (0) | 2022.01.22 |
Day19) HIG (Human Interface Guidelines) (0) | 2022.01.21 |
Day15) Xcode 디버깅 (0) | 2022.01.17 |
Day14) 객체지향 프로그래밍 (0) | 2022.01.16 |