ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 함수형 프로그래밍의 개념 및 OOP와의 차이점
    컴퓨터공학 2020. 5. 14. 20:47

    이미지 출처 : https://medium.com/@douglasbellonrocha/functional-object-oriented-programming-with-message-passing-71979ca9d097

     

    함수형 프로그래밍과 순수 함수

     

    함수형 프로그래밍이란  *사이드이펙트가 없는 순수 함수와 동작의 결과를 강조하는 프로그래밍 패러다임이다.

    순수함수는 동일한 인자를 넣었을 때 동일한 출력값을 반환하므로 안정성과 생산성을 높일 수 있다.

    OOP과 비교하여 함수의 동작부가 간결해 지기 때문에, 코드 이해도와 가독성에 큰 장점을 가지고있다.

     

    여기서,

    *순수 함수(Pure Function), 동일한 입력값을 넣었을 때 항상 동일한 리턴값을 반환하며 외부에 영향을 받지 않는 함수이다.

     

     

     

    ex) 순수 함수가 아닌 경우

    // 1.외부의 요인에 따라 리턴 값이 달라지는 경우
    
    function func(a, b) {
              return a + b + c; // 외부의 요인(변수) c 에 따라 리턴값이 달라짐
    }
    
    
    // 2. 인자를 직접 변경하여 Side-effect를 갖는 경우
    
    function func(a, b) {
    	c = b; // 들어온 인자의 값이 직접 변경되어 리턴값이 달라짐
    	return a + b + c
    }

    * , 인자로 들어온 (외부의)값을 참조만 하고 새로운 값으로 만들어 리턴하는 경우는 순수 함수이다.

     

     

     

    함수형 프로그래밍의 장단점

    장점

    • 사이드이펙트를 미연에 방지한다.

    • 객체지향보다 코드가 간결하다.

    • 비절차형이라 평가 시점(연산 시점)이 중요하지 않다.

    • 테스트가 쉽다. (1회만으로 신뢰성 보장)

     

    단점

    • 외부 데이터 혹은 내부 데이터의 상태를 조작할 수 없다.

     

    함수형 프로그래밍과 객체지향 프로그래밍의 차이

     

    객체지향 프로그래밍과 함수형의 차이는 데이터(상태)를 다루는 개념과, ‘간결한 코드 작성에 대한 관점 차이가 있다.

    객체지향이 함수의 동작부를 *캡슐화해서 코드를 이해할 수 있게 한다면, 함수형 프로그래밍은 동작부를 최소화해서 코드 이해를 돕는다.

     

    • 객체지향 프로그래밍의 경우, 클래스 디자인과 객체들의 관계를 중심으로 코드 작성이 이루어진다. 따러서 상태, 멤버변수, 메서드 등이 긴밀한 관계를 가지고 있다. 특히 멤버변수가 어떤 상태를 가지고있는가에 따라 결과가 달라진다.

    • 함수형 프로그래밍의 경우, 값의 연산 및 결과 도출 중심으로 코드작성이 이루어진다. 함수 내부에서 인자로 받은 값을 별도로 저장하거나 하지 않고, 간결한 과정으로 처리하고 매핑하는데에 주 목적을 둔다. 

     

Designed by Tistory.