함수형 코딩 현실에서의 함수형 사고

쏙쏙 들어오는 함수형 코딩

Chapter 2 : 현실에서의 함수형 사고

이번 장에서 살펴볼 내용은 다음과 같다.

  • 현실적인 문제에 함수형 사고를 적용해 본다.
  • 소프트웨어 구조를 잡는 데 계층형 설계가 좋은 이유
  • 액션을 타임라인으로 시각화
  • 타임라인을 사용하면 시간에 관한 문제를 잘 풀 수 있다.

함수형 프로그래머는 코드에서 액션, 계산, 데이터를 구분하는데 이유?

쉽게 다룰수 있는 부분과 조심히 다뤄야 할 부분을 명확하게 하기 위해서이다.

쉽게 다룰수 있는 부분과 조심히 다뤄야 할 부분은 무엇인가?

쉽게 다룰수 있는 부분은 계산, 데이터이고 조심히 다뤄야 할 부분은 액션이다. 이전 장을 복습하자면 액션은 호출하는 시점횟수에 영향을 받기 때문이다.

계층화 설계란?

가장 아래쪽에는 배열이나 객체 같은 언어 기능(기술 스택)을 놓는다. 가운데는 바뀔 수도 있지만 자주 바뀌지 않는 도메인 규칙, 마지막으로 가장 위쪽에는 자주 바뀌는 비지니스 규칙을 놓는다.

각 계층은 그 아래에 있는 계층을 기반으로 만들어 진다. 각 계층에 있는 코드는 더 안정적인 기반 위에 작성할 수 있다. 이런 구조로 소프트웨어를 만들면 코드를 쉽게 변경할 수 있다. 가장 위쪽의 비지니스 규칙은 의존성이 거의 없기 때문에 쉽게 바꿀 수 있다. 이 아키텍쳐 패턴이 계층을 만들기 때문에 계층형 설계라고 한다.

계층형 설계는 일반적으로 비지니스 규칙, 도메인 규칙, 기술 스택 계층으로 나눠진다. 계층형 설계로 만든 코드는 테스트, 재사용, 유지보수가 쉽다.

각 계층은 무슨 기준으로 나누는가?

각 계층은 코드의 변경 가능성에 따라 나눈다.

타임라인 다이어그램?

타임라인 다이어그램은 액션이 시간 순서에 따라 어떻게 실행되는지 볼 수 있다. 액션은 실행 시점에 의존하기 때문에 실행 순서가 중요하다.

즉, 시간에 따라 변하는 액션을 시각화하는 방법이다.

분산 시스템을 타임라인으로 시각화했을 때 문제점은?

타임라인은 서로 순서를 맞출 수 있는 기능이 없다. 따라서 타임라인을 서로 맞추지 않은 분산 시스템은 예측 불가능한 순서로 실행된다.

그렇다면 올바른 순서로 동작하는 프로그램을 만들려면 어떻게 해야할까? 시간에 의존적인 액션에 집중해야 한다.

  1. 타임라인은 서로 실행 순서를 맞춰야한다.
  2. 각각의 타임라인은 다른 타임라인의 순서와 관계없이 만들어야 한다.
  3. 타임라인은 항상 올바른 결과를 보장해야 한다.
  4. 타임라인 다이어그램으로 시스템의 문제를 알 수 있다.

타임라인 커팅이란?

타임라인 커팅은 여러 타임라인이 동시에 진행될 때 서로 순서를 맞추는 방법이다. 타임라인 커팅은 고차 동작으로 구현한다. 각 타임라인은 독립적으로 동작하고 작업이 완료되면 다른 타임라인 끝나기를 기다리기 때문에 어떤 타임라인이 먼저 끝나도 괜찮다.

즉, 타임라인 커팅은 액션이 올바른 순서로 실행할 수 있도록 보장해준다.

고차 동작이란?

고차 동작은 고차 함수로 만든 동작을 말한다.

results matching ""

    No results matching ""