c 받기 잘하는 진겸입니다.
함수형 프로그래밍 ¶
- 언어도 중요하지만, 그 언어를 통해 무엇을 할 수 있는가가 중요
- 기존 시각과는 조금 다른 js를 통해 함수형 프로그래밍
- React와 Redux
- js로 만들었지만 함수형 프로그래밍의 개념을 사용하는 프레임워크
- 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
- 자기 할 일만 함 ex) multiply
- 순수하지 않은 함수들
- current time
- random
- io
- user input, network request
- current time
- 함수형 프로그래밍의 기본
- avoiding shared state
- 구글의 자동완성
- state를 공유하는 순간, io 또는 변수를 추적하기 어려워짐
- 즉, 예측 불가능해짐
- 구글의 자동완성
- avoid side effects
- side effect와 logic의 분리
- 다만 side effect가 없다면 기능을 할 수 없으므로
- 이를 정리하자
- side effect와 logic의 분리
- avoid mutable data, mutating state
- declarative rather than imperative
- pure function
React & Redux ¶
- React
- facebook에서 만든 프론트엔드용 프레임워크
- View만 설계해주는 라이브러리
- unidirectional data flow
- virtual DOM
- 바꿔야될 부분만 바꾸게 됨
- 성능상의 이점
- 바꿔야될 부분만 바꾸게 됨
- facebook에서 만든 프론트엔드용 프레임워크
- Redux
- react와 같은 단방향
- deterministic
- 앱의 모든 상태와 view를 예측 가능하도록
- 앱의 모든 상태와 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
- single source of truth
- react와 같은 단방향
- 장점
- 앱의 구조가 깔끔해진다.
- 앱 전체가 predictable해진다.
- 성능상의 문제도 해결해준다.
- 앱의 구조가 깔끔해진다.