• Blog

  • Snippets

함수형코딩 Chapter 1~2

May 2, 2024

쏙쏙들어오는 함수형 코딩

# 함수형 프로그래밍은 무엇인가?

  1. 수학함수를 사용하고 부수효과(side effect)를 피하는것이 특징인 프로그래밍 패러다임
  2. 부수효과 없이 순수함수만 사용하는 프로그래밍 스타일

쉽게 얘기하자면 함수형 프로그래밍은 수학 함수처럼 어떤 값을 넣으면 항상 같은 값이 나오는데, 프로그래밍에서는 때때로 함수가 예상치 못한 일들을 할때가 있음. 예를 들어, 어떤함수가 실행될 때마다 파일을 열거나, 네트워크를 통해 데이터를 보내는경우처럼. 이런 일들을 부수효과(side effect)라고 부르는데, 이걸 최대한 피하려고하는게 함수형 프로그래밍의 목표임.

함수는 단지 입력을 받아서 출력을 내놓는 역할만 하고, 주변 상황에는 영향을 주지 않아야함. 그래서 같은 입력을 넣으면 항상 같은 출력을 얻을 수 있음. 이런 식으로 함수를 작성하면 코드가 더 예측 가능하고 이해하기 쉬워짐.

# 액션, 계산, 데이터

함수형 프로그래밍에선 코드를 세 가지로 분류함


export default fucntion App() {
// 데이터
const [count , setCount] = useState(0);
// 액션
const onClick = () => setCount((count) => count + 1);
return <button onClick={onClick}>{count}</button>
}

액션함수에서 계산함수를 따로 분리 할 수 있음.

export default function App() {
// 데이터
const [count , setCount] = useState(0);
// 계산
const increase = (count) => count + 1;
// 액션
const onClick = () => setCount(increase);
return <button onClick={onClick}>{count}</button>
}

함수형 프로그래밍의 핵심은 액션과 계산을 확실히 분리해서 액션을 최소화하고 계산함수를 많이 만들어서 관리하는것을 목표로함.

# 계층화 설계

변경 가능성에따라 코드 나누기

자주 변경되는것과 그렇지 않은것들을 구별해야함. 상위계층에 변경빈도에 따라 뭐가 더 변경되기 쉬운지를 생각하여 블럭을 쌓아야함. 하위 계층에 의존하기 때문에 쉽게 바꿀 수 있고, 하단으로 갈수록 바꾸기는 쉽지만 자주 바꿀일이 없는 코드가 됨.

예를들어서 React나 Vue.js는 자바스크립트에 의존하고 있는데, 자바스크립트는 왠만하면 변하지 않음. 이렇듯 기술 스택과 관련된 부분은 쉽게 바뀌지 않음. 그래서 보통 언어와 관련된 기능들은 최하위 계층에 위치함.

# 타임라인 커팅

타임라인 커팅기법(고차 동작 high-order operation)을 사용하면 다른 타임라인이 끝나기를 기다림. 모든 타임라인이 끝나기 전까지 기다리기 때문에 어떤 타임라인이 먼저 끝나도 상관없음. 올바른 순서로 실행 할 수 있도록 보장해줌.