👨‍💻 TIL

TIL11 - 2023.10.05

zunwon 2023. 10. 6. 20:16

명령형 프로그래밍

  • 컴퓨터가 수행할 명령들을 순서대로 써 놓은 것
  • "어떻게 구현하는가(어떤 방법으로 하는가)"를 디테일하게 기술하는 것에 관점이 가있다

 

선언형 프로그래밍

  • "무엇을 나타내야 하는가"에 관점이 가있다

 

명령형 프로그래밍 vs 선언형 프로그래밍

예시 1

//명령형
function double(arr) { //array의 값을 어떻게 가공할 것인가
    let results = [];
    for(let i = 0; i < arr.length; i++) {  // 어떻게 처리하는지에 대한 묘사
        if (typeof arr[i] === 'number'){
            results.push(arr[i] * 2);
        }
    }
    return results;
}

//선언형
function double(arr) { // map으로 어떠한 과정을 거칠 것인지
    return arr.filter(element => typeof element === 'number')
              .map(number => number * 2); // 무엇을 원하는지에 대한 묘사
}

예시 2

//명령형
function filterCats(cats) {
    let results = [];

    for(let i = 0; i < cats.length; i++) {
        if(cat &&
            cat.colors.include('black') &&
            cat.ear === 'unfolded') {
                results.push(cat.name);
            }
    }
    return results;
}

//선언형
function filterCats(cats) {
    return cats.filter(cat => cat && 
        cat.colors.includes("black") && 
        cat.ear === 'unfolded'
        ).map(cat => cat.name)
}
이외에도 기능을 구현하다보면 명령형 같은 경우 요구사항이 많아질 수록 코드가 복잡해져 해당 코드가 무슨 일을 하는지 바로 파악할 수 없다. 예를 들어 토글 버튼과 관련한 기능 추가를 구현할 때, 명령형 프로그래밍은 돔을 많이 접근하게 되는데 그러면 많이 복잡해지고 후에 확장하기도 좋지 않다. 하지만 선언형 프로그래밍은 상태로 추상화를 하고 상태를 기반으로 접근을 하도록 작성할 수 있어 복잡도를 많이 낮추고, 이후에 확장하는데에 있어서도 좋다. 때문에 UI를 다루는 것에 있어서 선언형 프로그래밍으로 구현하는 것이 더 좋다