반드시 "함수형 프로그래밍"을 알아야 할까?
이 글은 '노마드 코더 Nomad Coders'님 의 영상 내용을 바탕으로 정리한 내용입니다.
Intro
함수형 프로그래밍이 무엇이고, 왜 알아야 하는지에 대해 알아보도록 하자.🤗
함수형 프로그래밍
개발자는 반드시 함수형 프로그래밍을 배워야 한다고 생각한다. 함수형 프로그래밍은 코드 작성 스타일이라고 할 수 있다. 아예 함수형 코드로 만들어진 언어들도 있다. 그렇다 하더라도 이 개념을 알아놓으면 (배워놓으면) 무슨 언어로 코드를 작성하든 도움이 될 것이다. 함수형 프로그래밍을 배우면, 프로그래밍 문제를 해결할 때 유용한 새로운 관점과 접근 방식을 얻을 수 있다. 일종의 새로운 사고방식을 배우는 것이다. 함수형 프로그래밍에 따라 코드를 작성할 경우 깨끗한 코드를 작성할 수 있고, 버그가 쉽게 숨겨지지 않는다. 이미 좋은 기술과 경력을 갖춘 시니어 개발자들은 점진적으로 함수형 프로그래밍 언어를 사용한다.
함수형 프로그래밍을 실제로 이해하는 것이 어려워울 수 있는데, 이는 함수형 프로그래밍에 대한 많은 설명들이 개념의 정의에만 집중하기 때문이다. (ex. purity, immutability, side effects 같은 것들...) 이러한 개념들의 정의만 할 뿐, 정작 개발자들에게 왜 더 좋은 건지 설명하지 않는다. 코딩을 하면서 이를 경험하지 않는 한 알 수 없다. 역사, 개념, 정의만 배워서는 제대로 이해할 수가 없다. 코드를 비교하면서 어떻게 다르고 어떤 장단점이 있는지 살펴보자.
명령형(imperative)코드와 선언형(declarative)코드 차이
- 명령형(imperative)코드
Make me a sandwich
- 선언형(declarative)코드
1. bread toast
2. apple + cheese + tomato cut
3. com bine
4. done!
선언형(declarative)코드는 원하는 결과를 얻기 위해 필요한 지침에 따라 코드가 작성된다. CSS는 선언형 언어이다. declarative
body {
color: red
}
선언형 코드는 원하는 결과값을 선언하는 것이다. 명령형 코드는 그 결과값에 어떻게 도달하느냐에 관한 것이다.
코드 예제
텍스트 문자열에서 공백을 제거하고 대신 하트 이모티콘으로 대신하는 코드를 구현해보자.
명령형
function spaceToHeart(text) {
let result = "";
for (let i = 0; i < text.length; i++) {
if (text[i] === " ") {
result += "하트";
} else {
result += text[i];
}
}
return result;
}
선언형
function spaceToHeart(text) {
return text.replaceAll(" ", "하트");
}
replaceAll() 메소드를 사용한다. 이 두가지 코드를 비교했을 때 declarative 코드는 읽기가 더 쉽고, 함수가 무슨 역할을 하는지 이해하기가 편하다. replaceAll 함수의 내부 작업에는 명령형 코드가 있을 수 있다. 모든 선언형 코드는 명령형 코드 위에 쓰여진다고 말할 수 있다. 그러나 개발자들은 명령형 코드 대신에 명령형 코드 방식을 피할 수 있는 함수 등을 활용할 수 있다.
명령형 방식에서 코드가 길어지는 것 외에 또 다른 문제점은 요구사항의 구현이 개발자인 우리에게 달려 있기 때문에 코드를 원하는 대로 작성하면 버그나 실수가 더 생기기 쉽다. 팀 동료들은 또한 이해하기 어려울 수 있다. 해당 함수가 정확히 무엇을 하려고 하는지 한줄 한줄 자세히 읽어야 한다.
function checkForOdd(item) {
return item % 2 === 0;
}
fu nction removeOdd(items) {
return items.filter(checkForOdd);
}
filter 함수는 조건을 통과하는 모든 요소를 포함하는 배열을 반환한다. 배열에 적용할 필터가 무엇인지 설명했을 뿐 어떻게 적용되는지는 중요하지 않다.
conclusion
개인적으로 선언형을 최대한 자주 쓰려고 한다. 어떤 사람들은 선언형을 싫어하는데 replaceAll과 filter와 같은 것들을 미리 알아야 하기 때문이다. 하지만, 항상 그러하듯, 각 업무에 적합한 도구를 쓰는 게 중요하다.
https://www.youtube.com/watch?v=7aEQLvvnQIY
Author And Source
이 문제에 관하여(반드시 "함수형 프로그래밍"을 알아야 할까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@leyuri/반반드시-함수형-프로그래밍을-알아야-할까저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)