서녕이네 개발단지

쏙쏙 들어오는 함수형 코딩 [CHAPTER 4] 본문

도서

쏙쏙 들어오는 함수형 코딩 [CHAPTER 4]

zero2-pooh 2023. 7. 26. 01:22

액션에서 계산 빼내기 

🖐🏻이번 장에서 살펴볼 내용

  • 어떻게 함수로 정보가 들어가고 나오는지 살펴보자.
  • 테스트하기 쉽고 재사용성이 좋은 코드를 만들기 위한 함수형 기술에 대해 알아보자. 
  • 액션에서 계산을 빼내는 방법을 배워보자.

테스트하기 쉽게 만들기

테스트를 더 쉽게 하려면 다음 조건이 필요하다. 

   1. DOM 업데이트와 비즈니스 규칙은 분리되어야 한다.

   2. 전역변수가 없어야 한다❌. 

 


재사용하기 쉽게 만들기

재사용하려면 아래와 같은 조건이 필요하다. 

  1. 전역변수에 의존하지 않아야 한다.

  2. DOM을 사용할 수 있는 곳에서 실행된다고 가정하면 안된다❌.  

  3. 함수가 결괏값을 리턴해야 한다. 

 


액션과 계산, 데이터를 구분하기

- 먼저 해야 할 일은 각 함수가 액션과 계산, 데이터 중 어떤 것인지 구분하는 일이다. 그 다음 어떻게 코드를 개선할 수 있는지 알 수 있다. 

💡 액션 구분하기
* 전역변수는 변경이 가능하기 때문에 액션이다.
* 전역변수를 바꾸는것 또한 액션이다. 
* DOM에서 읽는 것은 액션이다. 
* DOM을 바꾸는 것도 액션이다.

 ❗️액션은 코드 전체로 퍼진다❗️

- 어떤 함수 안에 액션이 하나만 있어도 그 함수 전체가 액션이 된다.


계산 추출을 단계별로 알아보기 

- 액션에서 계산을 빼내는 작업은 반복적인 과정이다. 

 

1. 계산 코드를 찾아 빼낸다.

- 빼낼 코드를 찾는다.

- 코드를 추출해 새로운 함수를 만들어 리팩터링 한다.

- 새 함수에 인자가 필요하다면 추가한다.

- 원래 코드에서 빼낸 부분에 새 함수를 부르도록 바꾼다. 

 

 

2. 새 함수에 암묵적 입력과 출력을 찾는다. 

- 새 함수에 암묵적 입력과 출력을 찾는다. 

- 암묵적 입력은 함수를 부르는 동안 결과에 영향을 줄 수 있는 것을 말한다.

- 암묵적 출력은 함수 호출의 결과로 영향을 받는 것을 말한다. 

- 함수 인자를 포함해 함수 밖에 있는 변수를 읽거나 데이터베이스에서 값을 가져오는 것은 입력이다.

- 리턴값을 포함해 전역변수를 바꾸거나 공유 객체를 바꾸거나, 웹 요청을 보내는 것은 출력이다.

 

 

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

- 한 번에 하나씩 입력은 인자출력은 리턴값으로 바꾼다. 

- 새로운 리턴값이 생겼다면 호출하는 코드에서 함수의 결과를 변수에 할당해야 할 수도 있다. 

 

❗️여기서 인자와 리턴값은 바뀌지 않는 불변값이라는 것이 중요하다. 

 

- 리턴값이 나중에 바뀐다면 암묵적 출력이다.

- 또한 인자로 받은 값이 바뀔 수 있다면 암묵적 입력이다. 

 



🖐🏻 요점 정리

  • 액션은 암묵적인 입력 또는 출력을 가지고 있다. 
  • 계산의 정의에 따르면 게산은 암묵적인 입력이나 출력이 없어야 한다. 
  • 공유 변수(전역변수 같은)는 일반적으로 암묵적 입력 또는 출력이 된다.
  • 암묵적 입력은 인자로 바꿀 수 있다.
  • 암묵적 출력은 리턴값으로 바꿀 수 있다.
  • 함수형 원칙을 적용하면 액션은 줄어들고 계산은 늘어난다는 것을 확인했다.