일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- TypeScript
- useMemo
- Interface
- Front-End
- 타입스크립트
- 배칭
- 렌더링
- Next.js
- react router dom v6
- 프론트엔드
- 고급타입
- 상태 끌어올리기
- 자동 배칭
- rendering
- react rendering
- React
- 자바스크립트
- useCallback
- react code splitting
- JavaScript
- 리액트 코드분할
- 렌더링 동작원리
- 타스
- NextJS
- 리액트
- state 최적화
- TS
- router dom
- mapped types
- lifting state up
- Today
- Total
서녕이네 개발단지
쏙쏙 들어오는 함수형 코딩 [CHAPTER 4] 본문
액션에서 계산 빼내기
🖐🏻이번 장에서 살펴볼 내용
- 어떻게 함수로 정보가 들어가고 나오는지 살펴보자.
- 테스트하기 쉽고 재사용성이 좋은 코드를 만들기 위한 함수형 기술에 대해 알아보자.
- 액션에서 계산을 빼내는 방법을 배워보자.
테스트하기 쉽게 만들기
테스트를 더 쉽게 하려면 다음 조건이 필요하다.
1. DOM 업데이트와 비즈니스 규칙은 분리되어야 한다.
2. 전역변수가 없어야 한다❌.
재사용하기 쉽게 만들기
재사용하려면 아래와 같은 조건이 필요하다.
1. 전역변수에 의존하지 않아야 한다.
2. DOM을 사용할 수 있는 곳에서 실행된다고 가정하면 안된다❌.
3. 함수가 결괏값을 리턴해야 한다.
액션과 계산, 데이터를 구분하기
- 먼저 해야 할 일은 각 함수가 액션과 계산, 데이터 중 어떤 것인지 구분하는 일이다. 그 다음 어떻게 코드를 개선할 수 있는지 알 수 있다.
💡 액션 구분하기
* 전역변수는 변경이 가능하기 때문에 액션이다.
* 전역변수를 바꾸는것 또한 액션이다.
* DOM에서 읽는 것은 액션이다.
* DOM을 바꾸는 것도 액션이다.
❗️액션은 코드 전체로 퍼진다❗️
- 어떤 함수 안에 액션이 하나만 있어도 그 함수 전체가 액션이 된다.
계산 추출을 단계별로 알아보기
- 액션에서 계산을 빼내는 작업은 반복적인 과정이다.
1. 계산 코드를 찾아 빼낸다.
- 빼낼 코드를 찾는다.
- 코드를 추출해 새로운 함수를 만들어 리팩터링 한다.
- 새 함수에 인자가 필요하다면 추가한다.
- 원래 코드에서 빼낸 부분에 새 함수를 부르도록 바꾼다.
2. 새 함수에 암묵적 입력과 출력을 찾는다.
- 새 함수에 암묵적 입력과 출력을 찾는다.
- 암묵적 입력은 함수를 부르는 동안 결과에 영향을 줄 수 있는 것을 말한다.
- 암묵적 출력은 함수 호출의 결과로 영향을 받는 것을 말한다.
- 함수 인자를 포함해 함수 밖에 있는 변수를 읽거나 데이터베이스에서 값을 가져오는 것은 입력이다.
- 리턴값을 포함해 전역변수를 바꾸거나 공유 객체를 바꾸거나, 웹 요청을 보내는 것은 출력이다.
3. 암묵적 입력은 인자로 암묵적 출력은 리턴값으로 바꾼다.
- 한 번에 하나씩 입력은 인자로 출력은 리턴값으로 바꾼다.
- 새로운 리턴값이 생겼다면 호출하는 코드에서 함수의 결과를 변수에 할당해야 할 수도 있다.
❗️여기서 인자와 리턴값은 바뀌지 않는 불변값이라는 것이 중요하다.
- 리턴값이 나중에 바뀐다면 암묵적 출력이다.
- 또한 인자로 받은 값이 바뀔 수 있다면 암묵적 입력이다.
🖐🏻 요점 정리
- 액션은 암묵적인 입력 또는 출력을 가지고 있다.
- 계산의 정의에 따르면 게산은 암묵적인 입력이나 출력이 없어야 한다.
- 공유 변수(전역변수 같은)는 일반적으로 암묵적 입력 또는 출력이 된다.
- 암묵적 입력은 인자로 바꿀 수 있다.
- 암묵적 출력은 리턴값으로 바꿀 수 있다.
- 함수형 원칙을 적용하면 액션은 줄어들고 계산은 늘어난다는 것을 확인했다.
'도서' 카테고리의 다른 글
쏙쏙 들어오는 함수형 코딩 [CHAPTER 6] (0) | 2023.07.30 |
---|---|
쏙쏙 들어오는 함수형 코딩 [CHAPTER 5] (0) | 2023.07.29 |
쏙쏙 들어오는 함수형 코딩 [CHAPTER 1] (0) | 2023.07.21 |
면접을 위한 CS 전공지식 노트 [CHAPTER 5] (1) (0) | 2023.07.01 |
면접을 위한 CS 전공지식 노트 [CHAPTER 4] (2) (0) | 2023.06.25 |