액션과 계산, 데이터의 차이를 알기
May 8, 2024
쏙쏙들어오는 함수형 코딩
액션(Action), 계산(Calculate), 데이터(Data) 이 세가지를 정확히 분류하는게 함수형 프로그래밍에선 중요함.
- 액션(Action) : 실행 시점과 횟수에 의존
- 계산(Calculate) : 입력으로 출력을 계산
- 데이터(Data) : 이벤트에 대한 사실
코드를 짤때 액션, 계산, 데이터를 잘 구분해서 작성해야하는데, 구분을 잘하기가 참 쉽지가 않음.
이럴땐 하려는 모든 행동을 위의 다이어그램처럼 표현하면 구분하기 쉬워짐.
# 데이터(Data)의 장단점
데어터의 장점
- 데이터는 데이터자체로 할 수 있는것이 없기때문에 좋음. 그래서 데이터는 데이터 그대로 이해할 수 있음.
- 계산이나 액션은 서로 비교하기 어렵지만 데이터는 비교하기 쉬움. (동일성 비교)
- 데이터는 여러가지 방법으로 해석 할 수 있음. (자유로운 해석)
데어터의 단점
계산은 해석이 필요없지만, 데이터는 해석을 통해 어떤 데이터인지 알아야하기 때문에 반드시 해석이 필요하다는 단점이 있음. (해석하지 않은 데이터는 쓸모없는 바이트에 불과함)
# 액션(Action)에 대해서 자세히 알아보자.
액션을 일반적으로 무엇이라고 하냐면,
- 순수하지 않은 함수(impure function)
- 부수 효과 함수(side-effecting function)
- 부수 효과가 있는 함수(function with side effects)
라고 보통 부르는데, 이책에선 이걸 액션(Action)
이라고 함
액션을 잘 사용하기 위한 방법
- 액션을 사용하되, 액션대신 계산을 사용할 수 있도록 노력해야함.
- 액션은 가능한 작게 만들어야함.
- 액션에서 액션과 관련없는 코드는 모두 제거해야함. 예를들어 액션에서 계획과 결정에 대해선 계산으로 뺄 수 있음.
- 내부에 계산과 데이터만 있고, 가장 바깥쪽에 액션이 있는 구조로 코드를 짜야 이상적임.
- 액션이 호출시점과 횟수에 덜 의존하도록 해야함.