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

HeeJin.log·2021년 8월 3일
2

 🗃지식 상자

목록 보기
3/13
post-thumbnail

📌 객체지향, 함수형 너네는 도대체 누구냐?

프로그래밍을 할 때, 같은 결과를 만들어도 다양한 방법으로 결과를 도출 할 수 있다. 순차,분기,반복 그리고 참조 등 4가지 요소를 적절히 사용하여 패러다임을 만드는 것이다.

객체지향 프로그래밍은 객체(object)를 통해 데이터와 메서트를 묶고 객체간 메시지를 통해 통신하며 프로그램을 작동시키는 방식이다.

함수형 프로그래밍은 데이터를 함수로 발전시켜나가며 결과값을 얻어내는 데이터 파이프라인 형식으로 프로그램을 작동한다.
함수형 프로그래밍의 대표적 장점은 대표적을 이러하다

  • 재사용성이 높다.
  • datad의 불변성을 지향해서 오류가 적다.
  • 코드가 짧고 간단하다.

그렇다고 장점만 있느냐? 또 그렇것은 아니다. 단점들은 이러하다

  • data자체의 상태가 변하지 않기 때문에 변수의 변환이 어렵다.
  • 재사용하려면 함수를 작게 쪼개야 한다.

💻 코드로 보는 차이

N개의 숫자가 공백없이 입력되었을 때, 숫자의 합을 출력하는 예제를 보자.
ex) "12345" -> 10

객체지향

function StringNumber(string){
	this.string = string;
	}
    StringNumber.prototype.calculate = function (){
    	const stringNumber = "12345";
        this.sum = 0;
        for(let i=0; i< stringNumber.length;i +=1 ){
        this.sum += stringNumber[i] - "0";
        }
        };
        
        const stringNumber = new StringNumber("12345");
        const printer = new Printer();
        stringNumber.calculate();
        printer.log(stringNumber.sum);

단순한 결과임에도 코드가 좀 길다.

함수형

const stringNumber = "12345";
console.log(stringNumber.split('').map(x=>parseInt(x)).reduce((x,y)=>x+y,0));

함수형은 둘줄만에도 끝난다.

절차지형

const stringNumber = "12345";
let sum = 0;
for(let i=0;i<stringNumber.length;i++){
	sum += stringNumber[i] - "0';
    }

우리가 생각하는 방식대로 흘러가는 절차자형이 가장 접근하기 쉬운 방식인 것 같다.(단, 간단할 때)

0개의 댓글