함수형 프로그래밍 정의, 순수함수

Steve·2021년 3월 25일
1

성공적인 프로그래밍
1. 모든 프로그래밍 패러다임은 성공적인 프로그래밍을 위해 존재
2. 성공적인 프로그래밍은 좋은 프로그램을 만드는 일이다.
3. 좋은 프로그램은 사용성, 성능, 확장성, 기획 변경에 대한 대응력 등이 좋다.
4. 이것들을 효율적이고 생산적으로 이루는 일이 성공적인 프로그래밍이다.

함수형 프로그래밍

  • 함수형 프로그래밍은 성공적인 프로그래밍을 위해 부수 효과를 미워하고 조합성을 강조하는 프로그래밍 패러다임이다.

부수 효과를 미워한다. => 순수함수를 만든다.
(return 값 외에는 외부와 소통할 수 없음)
조합성을 강조한다. => 모듈화 수준을 높인다.
순수함수 => 오류를 줄이고 안정성을 높인다.
모듈화 수준이 높다. => 생산성을 높인다.

function add(a, b) {
	return a + b;
    }
console.log(add(10, 5));

이 함수를 어디서 언제 출력하든 동일한 값 반환됨
얻는 효과 -> 안정적, 유지보수에 좋음, 조합성 좋음(모듈화)

add 함수가 순수함수인 이유:
1. 동일한 인자를 주면 언제나 동일한 값 리턴
2. 부수효과가 없음(return 외에 외부에 효과를 안줌)
** 순수함수는 평가시점이 중요치 않음 -> 순수함수가 아닌 함수는 평가 시점에 따라 값이 다르게 반환
ex)

var c = 10;
function add2(a, b) {
  return a+b+c;
}
console.log(add2( 10, 2 )); //22
c = 20;
console.log(add2( 10, 2 )); //32

*똑같은 인자가 다른값을 초래함. 순수함수가 아님

function add3(a, b) {
	c = b; // 리턴값으로 소통하는 거 외에 외부에 영향을 미치는 값이 있으면 부수효과가
  		// 발생했다라고 하고 순수함수가 아니라고 함
	return a + b;
}

console.log('c: ',c); // 20
console.log(add3(20, 30));
console.log('c: ',c); // 30

var obj1 = { val : 10 }
function add4(obj, b) {
  obj.val += b;
}
console.log( obj1.val); //10
add4(obj1, 20);
console.log( obj1.val); //30

객체를 다룰 수 있다!
원래의 값을 그대로 두고 새로운 값을 만들어 복사해서 값이 변형된 새로운 값을 리턴
하는 식으로 함수를 만든다.

var obj1 = { val : 10 };
function add5(obj, b) {
return { val : obj.val + b }
}
console.log(obj1.val) // 10
var obj2 = add5(obj1, 20);
console.log(obj2.val) // 30

값을 변형해 나가거나 값을 다룰 때 원래 초기화 돼있는 값을 건들지 않고, 모든 값들에 대한 변화를 일으키지 않고, 외부의 상태를 변화시키지 않으면서, 인자로 받은 값을 직접 변경시키지 않으면서 값을 다뤄나가는 프로그래밍. -->> 순수함수이용
js에선 함수가 일급함수
즉, 함수를 값으로 다룰 수 있단 뜻
함수를 변수에 담을 수도 있고
변수에 담아진 함수를 값을 다룰 수도 있다.
인자로 보낼 수도 있다.

profile
Front-Dev

0개의 댓글