일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- swift documentation
- 애니메이션
- 리펙토링
- 리펙터링
- UICollectionView
- ios
- 스위프트
- combine
- uitableview
- 클린 코드
- collectionview
- HIG
- Clean Code
- Refactoring
- SWIFT
- RxCocoa
- MVVM
- uiscrollview
- rxswift
- swiftUI
- clean architecture
- ribs
- UITextView
- Xcode
- tableView
- Protocol
- Observable
- Human interface guide
- map
- 리팩토링
- Today
- Total
목록solid (12)
김종권의 iOS 앱 개발 알아가기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/XLHvz/btq70DCVSLc/afAlLCarBoSGIQhqQSP6z1/img.png)
ISP 필요 이상으로 많은걸 포함하는 모듈에 의존하는 것을 분리하기 위해, 의존 범위를 interface를 통해 좁히는 것 User1은 op1()만 사용, User2는 op2()만 사용, User3는 op3()만 사용할 때 아래 구조 ISP에 어긋난 구조: User1에서는 op2와 op3를 전혀 사용하지 않아도 User1의 소스 코드는 이 두 메서드에 의존하는 관계 ISP를 따르는 구조: User1, User2, User3 각각 기능에 따라 Interface를 따라서 의존 범위를 좁혀줌으로서 op1이 변경되어도 User2, User3에 영향이 가지 않도록 설계 ISP에 어긋난 구조 ISP를 따르는 구조 * 참고 Clean Architecture
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/KONpg/btq7QwEluUO/VC6bxp0f2L7FlYVtiMt9kk/img.png)
LSP 부모 클래스의 객체 대신에 자식 클래스의 객체로 치환해도 프로그램의 행위에 변화를 주지 않아야 한다는 원칙 자식 클래스 or 구현체를 만들 때, 상위 타입의 객체로 치환해도 문제가 없는지 파악해야 한다는 의미 인터페이스를 구현한 구현체 역시도 LSP원칙을 준수 목적: 치환 가능성을 조금이라도 위배하면, 추후 상당량의 별도 메커니즘이 필요 정사각형 - 직사각형 문제 사각형의 하위 타입으로 정사각형으로 구성하면 LSP위배 User입장에서는 Interface인 Reactangle의 성격을 생각하고 사용하지만, Square에서의 성격이 다른경우가 존재하면 오류 발생 그 오류를 해결하기 위해서는 상당량의 별도 매커니즘이 User에 필요하게 되는 악순환 발생 예시) setH, setW 호출 후 넓이 계산하는..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cxwF5u/btq7ut8OkTq/9YFVNCbobTgrk6mGF5hZ8K/img.png)
SRP 개념 개념: 하나의 *모듈은 오직 하나의 *액터에 대해서만 책임져야한다는 원칙 * 액터(actor): 해당 변경을 요청하는 한 명 이상의 사람을 지칭 * 모듈: 함수와 데이터 구조로 구성되어 응집된(cohesion) 집합 잘못된 SRP의 의미 주의 잘못된 개념1: 모든 모듈이 단 하나의 일만 해야한다는 잘못된 개념 -> 모든 모듈이 단 하나의 일만 해야한다는 개념은 '함수'의 정의 잘못된 개념2: 하나의 모듈은 오직 하나의 사용자 또는 이해관계자에 대해서만 책임 -> 시스템이 동일한 방식으로 변경되기를 원하는 사용자나 이해관계자가 두 명 이상일 수 있기 때문에 잘못된 개념 SRP는 메서드와 클래스 수준의 원칙이며, 이보다 상위 수준인 컴포넌트 수준은 공통 폐쇄 원칙(Common Closure Pr..
Architecture vs SOLID Architecture는 빌딩, SOLID는 좋은 벽돌 SOLID를 통해서 좋은 아키텍처를 정의 SOLID: 함수와 데이터 구조를 클래스로 배치하고, 이 클래스들을 결합하는 방법에 대한 이론 cf) architecture vs design pattern vs SOLID architecture: 프로그램 내에서 큰 구조로 구성되어 다른 구성 요소들을 관리 방법으로 넓은 개념 design pattern: 특정 유형의 문제를 해결하는 방법으로 좁은 개념 SOLID: design pattern은 특정 문제 유형을 해결하는 개념이고, SOLID는 아키텍처를 위하여 세부 구조를 어떻게 배치하고 결합하는지에 관한 개념 SOLID의 목적 변경에 유연 이해하기 쉬움 많은 소프트웨어..