명령형에서 함수형 스타일로 리팩터링

명령형에서 함수형 스타일로 리팩터링 (Refactoring from the Imperative to the Functional Style)

명령형(imperative) 스타일의 코드를 해결책으로 쓰다 보면, 함수형 스타일로 더 간결하게 표현할 수 있는 경우가 많아요. 이 튜토리얼은 우리가 흔히 만나는 명령형 코드와 같은 동작을 하는 함수형 코드를 배우게 도와줍니다. 프로젝트를 진행하면서 적절한 곳에서는 이 튜토리얼에서 배운 매핑(mapping)을 활용해 명령형 코드를 함수형 코드로 바꿀 수 있을 거예요.

출처: Refactoring from the Imperative to the Functional Style

본문

이 튜토리얼은 우리가 자주 찾게 되는 명령형 스타일 코드와 동등한 함수형 스타일 코드를 배우게 도와줍니다. 프로젝트를 진행하다 보면, 이 튜토리얼에서 배운 매핑(mapping)을 이용해 적절한 상황에서 명령형 스타일 코드를 함수형 스타일 코드로 바꿀 수 있습니다.

이 시리즈에서는 명령형에서 함수형 스타일로의 다음과 같은 변환(conversion)을 다룹니다.

튜토리얼 명령형 스타일 함수형 스타일 대응
단순 반복문 변환하기 (Converting Simple Loops) for() range() 또는 rangeClosed()
스텝이 있는 반복문 변환하기 (Converting Loops with Steps) for(...i = i + ...) iterate() with takeWhile()
조건을 가진 foreach 변환하기 (Converting foreach with if) foreach(...) { if... } stream() with filter()
변환을 동반한 반복 변환하기 (Converting Iteration with Transformation) foreach(...) { ...transformation... } stream() with map()
스트림으로 변환하기 (Converting to Streams) 파일 읽기 연산 Files.lines()

단순 반복문 변환하기 (Converting Simple Loops)

단순 명령형 반복문을 함수형 스타일로 변환합니다.

스텝이 있는 반복문 변환하기 (Converting Loops with Steps)

스텝이 있는 명령형 반복문을 함수형 스타일로 변환합니다.

조건을 가진 foreach 변환하기 (Converting foreach with if)

foreachif를 사용한 명령형 반복을 함수형 스타일로 변환합니다.

변환을 동반한 반복 변환하기 (Converting Iteration with Transformation)

변환(transformation)을 동반한 명령형 반복을 함수형 스타일로 변환합니다.

데이터 소스를 스트림으로 변환하기 (Converting Data Sources to Streams)

데이터 소스(data source)를 스트림으로 변환합니다.

더 알아보기 (Learn more)