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
- 스위프트
- SWIFT
- 리펙터링
- UITextView
- swiftUI
- Protocol
- Clean Code
- ribs
- rxswift
- 리팩토링
- 애니메이션
- 리펙토링
- swift documentation
- uiscrollview
- map
- uitableview
- collectionview
- Xcode
- RxCocoa
- HIG
- Human interface guide
- clean architecture
- Refactoring
- MVVM
- Observable
- ios
- UICollectionView
- combine
- tableView
- 클린 코드
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[Refactoring] 10-5 API 리펙토링 (수정된 값 반환하기) 본문
수정된 값 반환하기
- 메소드 내부에서 값을 변경하는 것보다는, 메소드에서 값을 계산하여 나온 반환 값을 사용하는 편이 좋은 코드
- 데이터가 어떻게 수정되는지를 추적하는 일은 코드에서 이해하기 어려운 요소이므로, 함수 내부에서 데이터 값을 수정하는 예측하기 힘든 것들을 리펙토링해야함
- 즉 예측하기 쉬운 프로그래밍은 함수를 호출하는 쪽에서 어떤 값이 변경되는지 쉽게 파악이 가능해야하며 이는 함수 내부에서 전역 변수의 값을 바꾸는 것을 지양해야함
리펙토링 예시
- main() 메소드가 호출될때, 이 안에서 calculateAsset()이 호출되는데 함수 내부에서 전역 변수인 total을 바꾸게 되어 사용하는 쪽 main 안에만 보면 total 값이 바뀌는지 예측하기가 힘듦
struct Asset {
var countOfImages = 5
var colors = ["orange", "blue"]
var total = 0
mutating func calculateAsset() {
total = countOfImages + colors.count
}
mutating func main() {
calculateAsset()
}
}
- 값을 반환하는 함수로 리펙토링
- main 안에만 봐도 전역변수인 total 값이 변경되는 것을 쉽게 파악이 가능
struct Asset {
var countOfImages = 5
var colors = ["orange", "blue"]
var total = 0
func getCalculatedAsset() -> Int {
countOfImages + colors.count
}
mutating func main() {
total = getCalculatedAsset()
}
}
* 전체 코드: https://github.com/JK0369/ExRefactor10_5
* 참고
- Refactoring (Martin Flowler)
'Refactoring (리펙토링)' 카테고리의 다른 글
[Refactoring] 11-1 상속 리펙토링 (메서드 올리기) (0) | 2023.07.15 |
---|---|
[Refactoring] 10-6 API 리펙토링 (오류 코드를 예외로 바꾸기) (0) | 2023.07.13 |
[Refactoring] 10-4 API 리펙토링 (매개변수를 질의 함수로 바꾸기) (0) | 2023.07.09 |
[Refactoring] 10-3 API 리펙토링 (공통 모델에서 필요한 부분을 protocol을 사용하여 가져오기) (0) | 2023.07.07 |
[Refactoring] 10-2 API 리펙토링 (객체 통째로 넘기기) (0) | 2023.06.21 |
Comments