More actions
({CREATE}) |
(Repair batch-0005 pages from live compare) |
||
| (2 intermediate revisions by one other user not shown) | |||
| Line 1: | Line 1: | ||
c 받기 잘하는 진겸입니다. | |||
__TOC__ | |||
== 함수형 프로그래밍 == | |||
* 언어도 중요하지만, 그 언어를 통해 무엇을 할 수 있는가가 중요 | |||
* 기존 시각과는 조금 다른 js를 통해 함수형 프로그래밍 | |||
* React와 Redux | |||
** js로 만들었지만 함수형 프로그래밍의 개념을 사용하는 프레임워크 | |||
* 함수형 프로그래밍 on Web?? | |||
** 옛날 -> 정보가 서버에 집중 | |||
** 현재 -> 브라우저에서 정보를 다룸 | |||
** 이 변화를 완화시켜줌 | |||
* 5가지 조건 | |||
## pure function | |||
** 함수형 프로그래밍의 기본 | |||
** deterministic - 언제 어디서든 같은 결과값 | |||
** predictable - 예측 가능 | |||
** test code - 테스트 코드 | |||
** 스코프 외의다른 변수나 메서드에 의존적이지 않고, 변수 또한 변경하지 않는다. | |||
*** 어떤 입력에 대해 같은 출력 | |||
*** 이 함수로 인한 side effect가 없다 | |||
## input -> ouput의 mapping | |||
## ~~여러 명령의 집합체~~ | |||
## ~~I/O 관련 함수~~ | |||
** referential transparency | |||
*** 자기 할 일만 함 ex) multiply | |||
*** 같은 형태로 표현 가능함 | |||
*** 보장되지 않는 경우 - increase(1), hello word | |||
** 순수하지 않은 함수들 | |||
### current time | |||
### random | |||
### io | |||
### user input, network request | |||
## avoiding shared state | |||
** 구글의 자동완성 | |||
** state를 공유하는 순간, io 또는 변수를 추적하기 어려워짐 | |||
** 즉, 예측 불가능해짐 | |||
## avoid side effects | |||
** side effect와 logic의 분리 | |||
** 다만 side effect가 없다면 기능을 할 수 없으므로 | |||
** 이를 정리하자 | |||
## avoid mutable data, mutating state | |||
## declarative rather than imperative | |||
== React & Redux == | |||
* React | |||
** facebook에서 만든 프론트엔드용 프레임워크 | |||
** View만 설계해주는 라이브러리 | |||
** unidirectional data flow | |||
** virtual DOM | |||
** 바꿔야될 부분만 바꾸게 됨 | |||
** 성능상의 이점 | |||
* Redux | |||
** react와 같은 단방향 | |||
** deterministic | |||
** 앱의 모든 상태와 view를 예측 가능하도록 | |||
** MVC: 커질 수록 view와 model 사이의 관계가 비대 | |||
** state를 store하는데에 사용 | |||
** 앱내의 모든 state를 저장 | |||
** user event -> Action -(dispatch)> store -> new state -> React가 렌더링 | |||
** 같은 state에 대해 항상 일정한 view를 보여줌 | |||
** 기존의 state를 변형시키지 않음 | |||
** 3 laws | |||
** single source of truth | |||
** state is read-only | |||
** changes are made with pure function | |||
* 장점 | |||
** 앱의 구조가 깔끔해진다. | |||
** 앱 전체가 predictable해진다. | |||
** 성능상의 문제도 해결해준다. | |||
Latest revision as of 00:44, 27 March 2026
c 받기 잘하는 진겸입니다.
함수형 프로그래밍
- 언어도 중요하지만, 그 언어를 통해 무엇을 할 수 있는가가 중요
- 기존 시각과는 조금 다른 js를 통해 함수형 프로그래밍
- React와 Redux
- js로 만들었지만 함수형 프로그래밍의 개념을 사용하는 프레임워크
- 함수형 프로그래밍 on Web??
- 옛날 -> 정보가 서버에 집중
- 현재 -> 브라우저에서 정보를 다룸
- 이 변화를 완화시켜줌
- 5가지 조건
- pure function
- 함수형 프로그래밍의 기본
- deterministic - 언제 어디서든 같은 결과값
- predictable - 예측 가능
- test code - 테스트 코드
- 스코프 외의다른 변수나 메서드에 의존적이지 않고, 변수 또한 변경하지 않는다.
- 어떤 입력에 대해 같은 출력
- 이 함수로 인한 side effect가 없다
- input -> ouput의 mapping
- ~~여러 명령의 집합체~~
- ~~I/O 관련 함수~~
- referential transparency
- 자기 할 일만 함 ex) multiply
- 같은 형태로 표현 가능함
- 보장되지 않는 경우 - increase(1), hello word
- 순수하지 않은 함수들
- referential transparency
- current time
- random
- io
- user input, network request
- avoiding shared state
- 구글의 자동완성
- state를 공유하는 순간, io 또는 변수를 추적하기 어려워짐
- 즉, 예측 불가능해짐
- avoid side effects
- side effect와 logic의 분리
- 다만 side effect가 없다면 기능을 할 수 없으므로
- 이를 정리하자
- avoid mutable data, mutating state
- declarative rather than imperative
React & Redux
- React
- facebook에서 만든 프론트엔드용 프레임워크
- View만 설계해주는 라이브러리
- unidirectional data flow
- virtual DOM
- 바꿔야될 부분만 바꾸게 됨
- 성능상의 이점
- Redux
- react와 같은 단방향
- deterministic
- 앱의 모든 상태와 view를 예측 가능하도록
- MVC: 커질 수록 view와 model 사이의 관계가 비대
- state를 store하는데에 사용
- 앱내의 모든 state를 저장
- user event -> Action -(dispatch)> store -> new state -> React가 렌더링
- 같은 state에 대해 항상 일정한 view를 보여줌
- 기존의 state를 변형시키지 않음
- 3 laws
- single source of truth
- state is read-only
- changes are made with pure function
- 장점
- 앱의 구조가 깔끔해진다.
- 앱 전체가 predictable해진다.
- 성능상의 문제도 해결해준다.