Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

데블스캠프2017/React와Redux로배워보는함수형프로그래밍페러다임: Difference between revisions

From ZeroWiki
({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가지 조건
    1. pure function
    • 함수형 프로그래밍의 기본
    • deterministic - 언제 어디서든 같은 결과값
    • predictable - 예측 가능
    • test code - 테스트 코드
    • 스코프 외의다른 변수나 메서드에 의존적이지 않고, 변수 또한 변경하지 않는다.
      • 어떤 입력에 대해 같은 출력
      • 이 함수로 인한 side effect가 없다
    1. input -> ouput의 mapping
    2. ~~여러 명령의 집합체~~
    3. ~~I/O 관련 함수~~
    • referential transparency
      • 자기 할 일만 함 ex) multiply
      • 같은 형태로 표현 가능함
      • 보장되지 않는 경우 - increase(1), hello word
    • 순수하지 않은 함수들
      1. current time
      2. random
      3. io
      4. user input, network request
    1. avoiding shared state
    • 구글의 자동완성
    • state를 공유하는 순간, io 또는 변수를 추적하기 어려워짐
    • 즉, 예측 불가능해짐
    1. avoid side effects
    • side effect와 logic의 분리
    • 다만 side effect가 없다면 기능을 할 수 없으므로
    • 이를 정리하자
    1. avoid mutable data, mutating state
    2. 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해진다.
    • 성능상의 문제도 해결해준다.