Notice
Recent Posts
Recent Comments
Link
관리 메뉴

김종권의 iOS 앱 개발 알아가기

[Refactoring] 10-5 API 리펙토링 (수정된 값 반환하기) 본문

Refactoring (리펙토링)

[Refactoring] 10-5 API 리펙토링 (수정된 값 반환하기)

jake-kim 2023. 7. 12. 01:03

수정된 값 반환하기

  • 메소드 내부에서 값을 변경하는 것보다는, 메소드에서 값을 계산하여 나온 반환 값을 사용하는 편이 좋은 코드
    • 데이터가 어떻게 수정되는지를 추적하는 일은 코드에서 이해하기 어려운 요소이므로, 함수 내부에서 데이터 값을 수정하는 예측하기 힘든 것들을 리펙토링해야함
  • 즉 예측하기 쉬운 프로그래밍은 함수를 호출하는 쪽에서 어떤 값이 변경되는지 쉽게 파악이 가능해야하며 이는 함수 내부에서 전역 변수의 값을 바꾸는 것을 지양해야함

수정된 값 반환하기

리펙토링 예시

  • 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)

Comments