Notice
Recent Posts
Recent Comments
Link
관리 메뉴

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

[Refactoring] 7-8. 기능 이동 (함수 이동, 중첩함수 제거, 모듈성) - 반복문을 파이프라인으로 바꾸기, 선언형 프로그래밍 본문

Refactoring (리펙토링)

[Refactoring] 7-8. 기능 이동 (함수 이동, 중첩함수 제거, 모듈성) - 반복문을 파이프라인으로 바꾸기, 선언형 프로그래밍

jake-kim 2023. 4. 28. 01:41

반복문을 파이프라인으로 바꾸기

  • 파이프라인 코드란? 선언적으로 Collection 타입을 순회하는 방법
    • 처리과정을 일련의 연산으로 표현하고, 이 연산은 컬렉션을 입력받아서 다른 컬렉션을 내뱉는 형ㅇ태
    • 논리를 파이프라인(=선언적)으로 표현하면 이해하기가 쉬워지는 효과
  • 객체가 파이프라인을 따라흐르며 어떻게 처리되는지 읽게끔 구현

 

반복문을 파이프라인으로 바꾸기

  • 반복문 형태의 코드
struct Person {
    let job: String
    let name: String
}

var names = [String]()
let input = [
    Person(job: "sicence", name: "kim"),
    .init(job: "programmer", name: "lee"),
    .init(job: "idol", name: "kim")
]

// 반복문 형태
for i in input {
    if i.job == "programmer" {
        names.append(i.name)
    }
}
  • 파이프라인 형태의 코드
// 파이프라인 코드
let newNames = input
    .filter { $0.name == "programmer" }
    .map(\.job)

*  swift에서 대표적인 파이프라인인 higher order function인 map, filter, reduce 개념은 이전 포스팅 글 참고

 

* 참고

- Refactoring (Marting Flowler)

Comments