쏙쏙 들어오는 함수형 코딩 Chapter 2
🖍 쏙쏙 들어오는 함수형 코딩 - 심플한 코드로 복잡한 소프트웨어 길들이기
이 글은 쏙쏙 들어오는 함수형 코딩 - 심플한 코드로 복잡한 소프트웨어 길들이기를 읽고 작성한 글입니다. 함수형도 함수형이지만, 이 책을 통해 좀더 깔끔하고 직관적인 코드를 작성할 수 있을 것이란 팀원들의 의견을 토대로 이번 스터디 서적으로 선정하였습니다.
Chap 2. 현실에서의 함수형 사고
- 현실적인 문제에 함수형 사고를 적용해보자.
- 소프트웨어 구조를 계층으로 나눠서 설계해보자.
- 시간에 의존하는 액션을 타임라인으로 시각화해보자.
액션과 계산, 데이터
- 코드를
액션
과계산
,데이터
로 나누는 작업이 우선이다.(계층형 설계)
액션
호출 횟수
와시점
에 의존한다.- 사용할 때 항상 조심해야한다.
계산
- 어떤 것을 결정하거나 계획하는 것
실행해도 다른 곳에 영향을 주지 않는다.
- 함수형 프로그래머는 액션보단 계산을 선호한다.(다루기 쉬우므로)
데이터
- 가능한
변경 불가능한
데이터를 사용한다. - 유연하기 때문에 저장하거나 네트워크로 전송하는 등 다양하게 활용 가능하다.
변경 가능성에 따라 코드 나누기
- 자주 바뀌는 것 =>
비즈니스 규칙
- 바뀔 수도 있지만 자주 바뀌지 않는 것 =>
도메인 규칙
- 자주 바뀌지 않는 것 =>
기술 스택
각 계층은 그 아래에 있는 계층을 기반으로 만들어 진다. 즉, 좀더 안정적인 계층을 기반으로 만들어 진다. 이렇게 계층을 나누면 코드를 쉽게 변경 가능하다.
가장 위에 있는 코드는 의존성이 거의 없기 때문에 쉽겨 변경 가능하다.<br/> 반면, 가장 아래에 있는 코드들은 의존성이 많아 바꾸기 어렵지만 바꿀 일이 자주 생기지 않는다.
위와 같은 아키텍처 패턴이 계층을 만들기 때문에 계층형 설계
라고 부른다.
일급 추상
- 분산 시스템을 이해하기 위해
타임라인 다이어그램
을 사용한다. - 여러 함수가 협력할 수 있도록 함수를 인자로 받는 일급 함수를 사용한다.
타임라인 다이어그램ㄹ
- 액션이 시간 순서에 따라 어떻게 실행되는지 볼 수 있다.(액션은 실행 시점에 의존하기 때문에 실행 순서가 중요하다.)
- 기본적으로 타임라인은 서로 순서를 맞출 수 있는 기능이 없다.
- 서로 다른 타임라인에 있는 액션 간 실행 순서는 보장할 수 없다.
- 타임라인을 서로 맞추지 않은 분산 시스템은 예측 불가능한 순서로 실행된다.
- 올바른 순서로 동작하는 프로그램을 만들기 위해 액션(시간에 의존적인)에 집중해야 한다.
타임라인 커팅
- 여러 타임라인이 동시에 진행될 때 서로 순서를 맞추는 방법
- 고차 동작(고차 함수로 만든 동작)으로 구현한다.
- 다음 액션을 진행하기 위해 다른 타임라인의 액션을 기다리는 지점을 커팅하면 된다.
- 이를 통해 액션들이 올바른 순서로 실행되도록 보장할 수 있다.
undefined