[TIL 9] 명령형 프로그래밍 VS 선언적 프로그래밍

nyoung·2022년 4월 1일
0

자바스크립트

목록 보기
8/11
post-thumbnail

명령형 프로그래밍과 선언적 프로그래밍

명령형 프로그래밍

컴퓨터가 수행할 명령들을 순서대로 써 놓은 것이다.
어떻게 구현하는가를 디테일하게 기술하는 것에 관점이 있다,
ex) c++ 등 전통적인 언어들

선언형 프로그래밍

  • 프로그램이 어떤 방법으로 해야 하는지를 나타내기보다 무엇과 같은지를 설명하는 경우
    웹페이지는 선언형인데 웹 페이지는 제목, 글꼴, 본문, 그림과 같이 무엇이 나타나야 하는 지를 묘사해야기 때문에 선언형으로 이루어진다고 할 수 있다.
    ex) sql or html

코드 예시

1. double이라고 하는 함수를 만들어라.

// 명령형으로 작성
function double1(arr){
    let resultl = [];
    for(let i =0; i < arr.length; i++>){
        results.push(arr[i] * 2)
    }
    return results
}
// 선언형으로 작성
function double2(arr) {
    return arr.map(number => number * 2);
}

// double([1, 2, 3]) => [2, 4, 6];
console.log(double1([1, 2, 3]));
console.log(double2([1, 2, 3]));

명령형에서는 어떤 방식으로 하는가를ㄴ 서술하는 반면
선언형에서는 무엇을 할 것이냐가 중요하기 때문에 map의 규칙으로 넣었다.
무엇을 원하는지를 서술하는 것이 간결하고 코드도 쉽다.
따라서 명령형 프로그래밍 보다 선언형 프로그래밍을 지향하는 것이 좋다!

조건. number의 경우에만 처리해라

function double1(arr){
    let results = [];
    for(let i =0; i < arr.length; i++){
        if(typeof arr[i] === 'number'){
            results.push(arr[i] * 2)
        }
    }
    return results;
}

function double2(arr) {
    return arr.filter(param => typeof param === 'number')
        .map(number => number * 2);
}

console.log(double1([1, 2, 3, null, a]));
console.log(double2([1, 2, 3, null, a]));

명령형 같은 경우에는 if문을 통해 처리함으로써 점점 중첩되는 식이다.
이런 것이 많아지다 보면 코드의 맥락을 파악하기 어렵다.
또한 어떠한 규칙없이 쓰다보면 유지보수가 굉장히 어렵다.

반면 선언형은 filter로 훨씬 간단하게, 알아볼 수 있게 만들었다.
해야 하는 일을 하나씩 끊어서 하는 것이 훨씬 알아보기 쉽고 간단하다.

profile
점을 찍는 개발자🌱

0개의 댓글