diff --git "a/\354\261\225\355\204\260_4/\341\204\216\341\205\242\341\206\270\341\204\220\341\205\2454:\341\204\200\341\205\265\341\206\267\341\204\203\341\205\251\341\206\274\341\204\200\341\205\262.md" "b/\354\261\225\355\204\260_4/\341\204\216\341\205\242\341\206\270\341\204\220\341\205\2454:\341\204\200\341\205\265\341\206\267\341\204\203\341\205\251\341\206\274\341\204\200\341\205\262.md" new file mode 100644 index 0000000..62a7cc4 --- /dev/null +++ "b/\354\261\225\355\204\260_4/\341\204\216\341\205\242\341\206\270\341\204\220\341\205\2454:\341\204\200\341\205\265\341\206\267\341\204\203\341\205\251\341\206\274\341\204\200\341\205\262.md" @@ -0,0 +1,48 @@ +# 챕터 4: 액션에서 계산 빼내기 + +#스터디-쏙쏙들어오는함수형코딩 + +## 테스트를 더 쉽게 하는 방법 + +- DOM 업데이트와 비즈니스 규칙은 분리 되어야 합니다. +- 전역변수가 없어야 합니다. + +## 재사용하기 쉽게 만드는 방법 + +- 전역변수에 의존하지 않아야 합니다. +- DOM을 사용할 수 없는 곳에서 실행된다고 가정하면 안됩니다. + +## 액션과 계산, 데이터를 구분하기 + +- 변경 가능한 전역변수는 “액션”입니다. +- 어떤 함수 안에 액션이 하나만 있어도 그 함수 전체가 액션이 됩니다. + +## 함수의 입력과 출력 + +- 입력은 함수가 계산을 하기 위한 외부 정보 입니다. 출력은 함수 밖으로 나는 정보나 어떤 동작 입니다. +- 전역변수를 읽고 변경하거나, 콘솔을 찍는 것은 암묵적인 입력이나 출력 입니다. +- 함수에 암묵적인 입력과 출력이 있으면 액션이 됩니다. 반대로 암묵적 입력과 출력을 제거하면 계산이 됩니다. +- 함수형 프로그래밍에서 암묵적 입력과 출력을 “부수효과”라고 부릅니다. + +## 테스트와 재사용성은 입출력과 관련 있습니다. + +- 암묵적 입력과 출력을 없애야 합니다. + +## 액션에서 계산 빼내기 + +- 서브루틴 추출하기를 이용한 리팩토링을 진행하기 +- 암묵적 입력/출력을 명시적 입력/출력으로 변경하기 + +## 액션에서 또 다른 계산 빼내기 + +- 전역 변수 변경을 서브루틴으로 빼내고, 전역변수를 인자로 받아 거기에 업데이트 + +```생각 & 의견 +역할이 명확히 분리되고 함수형 프로그래밍 관점에서 액션이 많이 줄어든 것 같긴합니다. +평소에 코드 분리하면서 이런식으로 많이 분리하려고 노력했던 것 같은데 확실히 책에서 이야기 해주는 +"액션" "계산" "데이터" 로 분리해서 생각하니 엄청 편하게 다가오네요 + +다만,오히려 너무 많은 서브루틴을 통한 코드 파편화 +이로인한 너무많은 입력을 받아야 되는 것 +이런 문제들이 한켠으로는 생각이드는데 어떻게 생각하시나요? +```