함수형 프로그래밍이란?
함수형 프로그래밍은 성공적인 프로그래밍을 위해 부수효과를 미워하고 조합성을 강조하는 프로그래밍 패러다임이다.
부수 효과를 미워한다 => 순수함수를 만든다.
조합성을 강조한다 => 모듈화 수준을 높인다.
순수함수 -> 오류를 줄이고 안정성을 높인다.
모듈화 수준이 높다 => 생산성을 높인다.
순수 함수
쉽게 말하면 인풋이 같으면 아웃풋도 항상 동일하단 뜻.
예시를 통해 쉽게 이해해보자
function add(a, b){
return a + b
}
console.log( add(10,5) ); //15
//결과가 늘 같으므로 순수함수이다.
1번 예시. a, b 에 무슨 값을 입력해도 항상 동일한 결과를 도출한다.
let c = 10;
function add2(a, b){
return a + b + c;
}
console.log(add2(1,2)) //13
c = 20;
console.log(add2(1,2)) //23
//결과가 달라지므로 순수함수가 아니다.
2번 예시. 중간에 c가 바뀌어버리면 결과도 바뀌므로 순수함수가 아니다.
let c = 20;
function add3(a, b){
c = b;
return a + b;
}
console.log('c:', c ); // c: 20
console.log( add3(20,30) );
console.log('c:', c ); // c: 30
//결과가 달라지므로 순수함수가 아니다
3번 예시. 마찬가지로 함수 내부에서 밖에 있는 c를 바꿔서 결과가 계속 달라지므로 순수함수가 아니다.
let obj1 = { val : 10 }
function add4(obj, b){
obj.val += b;
}
console.log( obj1.val ); //10
add4(obj1, 20)
console.log( obj1.val ); //30
//리턴값도 없고, 인자로 들어온 값을 직접 변경한다. 순수함수가 아니다.
4번 예시. 리턴값이 존재하지 않고, 인자로 들어온 값을 직접 변경하고 있다. 순수함수가 아니다.
//순수 함수
let obj1 = { val: 10 }
function add5(obj,b){
return { val: obj.val + b }
}
console.log(obj.val); //10
let obj2 = add5(obj1,20);
console.log(obj1.val); //10
console.log(obj2.val); //30
5번 예시. 1번 예시와 같이 입력값이 동일하면 출력값도 항상 동일하다.
TIL
스파르타 코딩클럽 1차 과제 피드백을 받았다. 순수함수에 대한 문서를 읽어보라는 요청을 받았고, 내용을 찾아봤는데 머리를 한대 얻어맞은 느낌이었다. 정보처리기사 시험 칠 때도 공부했던 내용이고, 회사 다닐 때 선배한테도 몇 번 들어본 적 있는 내용인데 막상 실전에서 적용할 생각을 1도 안해봤기 때문이다. 그저 돌아가게만 하면 되는 줄 안다고 생각하고 코드를 짠 야매 코더 세월. 어려운 문제를 해결하는 것이 훌륭한 개발자라고 생각한 어리석은 과거를 반성하게 된다. 순수함수 순수함수. 항상 기억하고 코드를 짜야겠다.
'웹개발 > javascript' 카테고리의 다른 글
[javascript] 정규표현식 정리 및 연습, 예제 사이트 (0) | 2024.01.15 |
---|---|
[javascript] reduce 함수 사용법, 응용 (0) | 2024.01.12 |
[javascript] 콜백함수와 동기/비동기 처리 (2) | 2024.01.09 |
[Javascript] This 정의 및 용법 (0) | 2024.01.05 |
[Javascript] Set, Map, Object 차이 (0) | 2024.01.04 |