쏙쏙 들어오는 함수형 코딩에 오신 것을 환영합니다
함수형 프로그래밍이 무엇인지, 그리고 왜 더 좋은 소프트웨어를 만들 수 있는지 살펴봅니다.
스터디 회차: 1회차 (2025년 8월 13일)
함수형 프로그래밍이란?
함수형 프로그래밍은 수학 함수(순수 함수)를 기반으로 부수효과(side effect)를 피하는 것을 특징으로 하는 프로그래밍 패러다임입니다.
- 같은 입력에 대해 항상 같은 출력을 내는 순수 함수를 사용합니다.
- 외부 상태를 변경하는 부수효과를 최소화하는 스타일입니다.
실용적인 관점에서 함수형 프로그래밍의 문제점
현실적으로 소프트웨어는 부수효과 없이는 동작할 수 없습니다.
- 사용자에게 화면을 보여주기
- 데이터를 저장하기
- 네트워크 요청하기
이 모든 것이 부수효과입니다.
TIP
따라서 함수형 프로그래머는 부수효과를 완전히 제거하는 것이 아니라, 잘 다루는 것을 목표로 합니다.
액션, 계산, 데이터 구분하기
코드를 함수형적으로 다루기 위해서는 코드를 세 가지로 나눌 수 있습니다.
- 액션(Action) : 실행 시점과 횟수에 의존합니다. (예: 네트워크 요청, 콘솔 출력)
- 계산(Calculation) : 입력값 → 출력값, 실행 시점이나 횟수에 의존하지 않습니다. (예: 합계 계산)
- 데이터(Data) : 사건이나 사실을 기록한 값입니다. (예: 사용자 ID, 이메일 주소)
구분하는 것의 장점
복잡한 소프트웨어는 시간이 지남에 따라 상태가 변하고, 실행 시점에 따라 결과가 달라져서 이해하기 어렵습니다.
- 액션은 실행 시점·횟수에 따라 달라지므로 이해와 테스트가 어렵습니다.
- 데이터와 계산은 실행 시점이나 횟수에 의존하지 않으므로 예측 가능하고 테스트하기 쉽습니다.
- 따라서 코드를 데이터와 계산으로 옮겨갈수록 버그를 줄이고 관리하기 쉬워집니다.
- 또한 액션을 줄이면, 남은 액션도 훨씬 명확하고 다루기 쉬워집니다.
정리하기
- 함수형 프로그래밍은 부수효과를 제거하는 것이 아니라, 통제하는 것입니다.
- 코드를 액션, 계산, 데이터로 나누면 성격이 명확해집니다.
- 가능한 많은 부분을 계산과 데이터로 만들면,
- 실행 시점 의존성이 줄고
- 코드 이해와 테스트가 쉬워지며
- 버그를 예방할 수 있습니다.