[책 스터디] 쏙쏙 들어오는 함수형 코딩 – 액션에서 계산 빼내기

Hwang Tae Young·2025년 4월 15일
1

이번 내용은 챕터4 "액션에서 계산 빼내기"를 읽은 내용들을 정리해 보려고 한다.

📌 액션에서 계산을 꼭 빼내야 하나?

계산과 액션을 분리하는 것이 굉장히 중요하다.
그 이유는 크게 3가지로 나눌 수 있다.

1. 재사용 가능한 함수 만들기

액션에서 계산 로직을 분리하면, 동일한 입력에 대해 항상 같은 결과를 반환하는 순수 함수를 만들 수 있다. 이렇게 만들어진 함수는 재사용이 쉽고, 실행 환경에 영향을 받지 않기 때문에 다양한 곳에서 사용할 수 있게 된다.


2. 테스트가 쉬워진다

액션이 섞여 있는 함수는 테스트 환경이나 실행 조건, 횟수 등에 따라 결과가 달라지기 때문에 테스트하기 어렵다. 반면 계산만 하는 순수 함수는 동일한 입력값이라면 언제 실행해도 같은 값을 출력하기 때문에 예측하기 쉽고, 테스트에 용이하다.


3. 부수효과를 최소화한다

코드를 유지보수할 때 가장 어렵게 만드는 것 중 하나가 부수효과이다. 부수효과가 많을수록 코드의 동작을 예측하기 어렵고, 원하는 대로 동작하지 않을 가능성도 높아진다. 계산을 분리해두면 이런 부수효과를 최소화할 수 있고, 계산을 분리해두면 부수효과를 최소화할 수 있고, 코드는 더 명확하고 안정적이게 된다.


📌 액션과 계산을 분리하는 방법

액션과 계산을 분리하려면, 계산처럼 보이지만 실제로는 액션처럼 동작하는 함수들을 분리해내고, 이를 순수 함수가 되도록 만드는 것이 핵심이다.
즉, 동일한 입력에 대해 항상 같은 출력을 반환하고, 함수 외부 상태에 영향을 주거나 영향을 받지 않도록 해야 한다.

1. 계산 코드를 찾아 분리한다.

기존 코드에서 계산 역할을 하는 부분을 찾아 함수로 분리한다.
이때 필요한 값이 있다면 함수의 인자로 넘겨주도록 리팩토링하여 외부 상태에 의존하지 않는, 순수한 계산 함수로 만든다.

2. 암묵적인 입력/출력을 찾는다

암묵적인 입력은 함수를 부르는 동안 결과에 영향을 줄 수 있는 것을 말한다.
암묵적인 출력은 함수 호출의 결과로 영향을 받는 것을 말한다.
이러한 암묵적인 요소들은 함수의 예측 가능성을 떨어뜨리고 테스트를 어렵게 만든다.

예로들면, 암묵적인 입력은 전역변수 참조라고 할 수 있고 암묵적인 출력은 전역변수를 변경하는 것이라고 할 수 있다.

3. 암묵적인 입력은 인자로 출력은 리턴값으로 바꾼다.

암묵적인 입력은 명시적인 함수 인자로 바꾼다.
이때 외부 상태를 직접 인자로 넘기기 어렵다면, 필요한 값을 지역 변수로 추출해서 함수에서 사용하는 방식으로 바꾼다.

암묵적인 출력도 마찬가지로, 외부에 영향을 주는 행위가 아닌 함수의 리턴값으로 처리해야 한다.
이렇게 하면 함수가 외부 상태에 의존하거나 영향을 주지 않는 순수 함수가 되어,
예측 가능하고 테스트하기 쉬운 코드로 바꿀 수 있다.


📌 챕터4 후기

이번 챕터 역시 굉장히 흥미로웠다.
특히 리액트의 관점에서 '계산'과 '액션'을 어떻게 분리할 수 있을지 계속 생각하게 만든 챕터였다.
그러다보니 단순히 내용을 이해하는 것이 아니라, 실제 코드에 어떻게 적용할 수 있을지에 대한 고민도 자연스럽게 하게 된 것 같다.

물론, 고민한 것을 적용하는 것은 또 다른 얘기지만 말이다.
그래도 이책을 읽으며 고민한 것들을 적용해 보면서, 나의 세계관을 조금씩 만들고 확장해가는 연습을 해야겠다.

profile
어제 보다 나아져보자...☆

5개의 댓글

comment-user-thumbnail
2025년 4월 26일

저도 요즘 이 책 읽고있는데 정말 좋은 책인거같아요! 정리해주신 글 잘 읽었습니다 ^_^

답글 달기
comment-user-thumbnail
2025년 4월 29일

저도 해당 책에 관심이 있었는데 정리해주신 내용보니 더 빨리 읽어봐야겠네요
좋은글 감사합니다~!

답글 달기
comment-user-thumbnail
2025년 4월 30일

스터디 시작하셨군요ㅋㅋㅋㅋㅋ 환영합니다
태영님께서 정리해주신 앞 챕터들이 실제로도 적용하기 좋은 내용이 많았던 것 같아요! 수고하셨습니다 :)

답글 달기
comment-user-thumbnail
2025년 4월 30일

순수 함수로 분리하는 접근법이 사실상 모든걸 제자리에 놓을수있는 방법인거같아, 스터디 추노를 다시 잡아와야할텐데 ... ㅋㅋㅋ 그래도 화이팅 공부는 꼭 끝까지 하기를 응원합니다

답글 달기
comment-user-thumbnail
2025년 5월 1일

저도 이 책 읽어보려고 마음만 먹고 있었는데, 이렇게 정리된 내용을 보니까 더 빨리 읽고 싶어졌습니다. 읽으면서 어떻게 내 코드에 적용해볼지 상상해보게 되는 챕터였을 것 같네요.

답글 달기