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
- 리펙토링
- combine
- RxCocoa
- Clean Code
- swiftUI
- tableView
- Xcode
- Human interface guide
- 스위프트
- collectionview
- uitableview
- swift documentation
- 클린 코드
- map
- UITextView
- rxswift
- 애니메이션
- UICollectionView
- MVVM
- Observable
- HIG
- 리팩토링
- 리펙터링
- Refactoring
- clean architecture
- Protocol
- SWIFT
- uiscrollview
- ios
- ribs
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[Refactoring] 6-3. 캡슐화 (위임 숨기기) 본문
위임 숨기기
* swift에서 자주사용하는 delegate와는 다른 개념임을 주의
- B안에 C인스턴스가 있고 A가 C에 접근할때, B.C로 접근하지 않고 B에서 C를 리턴하는 메소드를 만들어, 사용하는 쪽에서는 B를 모르게끔 수정하는 방법 (기대효과: 사용하는쪽에서 B를 모르는 상태이므로, B의 코드를 수정할때 사용하는쪽을 신경쓰지 않고 쉽게 수정이 가능)
- 모듈화 설계의 핵심은 캡슐화이며, 캡슐화는 모듈들이 시스템의 다른 부분에 대해 알아야 할 내용을 줄여주는 것
- 무언가를 변경해야 할 때 함께 고려해야할 모듈 수가 적어져서 코드 변경이 쉬워짐
- 반대 리펙토링: 중개자 제거하기
위임 숨기기 예시)
리펙토링 전) 사용하는쪽에서 person.department.manager으로 접근하므로 department가 삭제되거나 수정될때 사용하는쪽의 코드도 고려해야하는 상황
struct Person {
let department = Department()
}
struct Department {
let manager = Manager()
}
struct Manager {
}
let person = Person()
let manager = person.department.manager
리펙토링 적용) 위임을 숨겨서(A.B.C를 A.C로 접근하도록) 의존성을 줄이기 - department를 볼 수 없게 숨기고, person에서 getManager()를 만들기
struct Person {
private let department = Department()
func getManager() -> Manager {
department.manager
}
}
struct Department {
let manager = Manager()
}
struct Manager {
}
let person = Person()
let manager = person.getManager()
* 참고
- Refactoring (Marting Flowler)
'Refactoring (리펙토링)' 카테고리의 다른 글
[Refactoring] 7-2. 기능 이동 (함수 옮기기, 중첩함수 제거, 모듈성) - 필드 옮기기 (1) | 2023.04.17 |
---|---|
[Refactoring] 7-1. 기능 이동 (함수 옮기기, 중첩함수 제거, 모듈성) - 함수 옮기기 (0) | 2023.03.26 |
[Refactoring] 6-2. 캡슐화 (클래스 추출하기) (0) | 2023.03.22 |
[Refactoring] 6-1. 캡슐화 (레코드 캡슐화하기) (2) | 2023.03.21 |
[Refactoring] 5-4. 기본적인 리펙토링 (단계 쪼개기) (0) | 2023.03.20 |
Comments