728x90
반응형
코드 작성 스타일 중 하나라고 할 수 있습니다.
정차지향 프로그래밍, 함수형 프로그래밍, 객체지향 프로그래밍, 함수형 반응형 프로그래밍이 있습니다.
함수형 프로그래밍의 장점
- 프로그래밍 문제를 해결할 때 유용한 새로운 관점과 접근방식 획득 가능
- 버그 발생률 낮음
- 잘만 사용한다면 연봉이 높음
함수형 프로그래밍이 왜 좋은지 알기 위해서 명령형(imperative)코드와 선언형(declarative)코드 간의 차이를 살펴보기로 합니다.
선언형 코드는 원하는 결과값을 선언하는 것
ex code
function changeBlanktoBird(text) {
return text.replaceAll(" ", "🐤")
}
명령형 코드는 그 결과값에 어떻게 도달하는지 선언하는 것
ex code
function changeBlanktoBird(text){
let result = ""
for (let i=0; i<text.length; i++){
if(text[i]===" "){
result += "🐤"
} else{
result += text[i]
}
}
return result
}
let A = ' 안녕하세요 호소세입니다. 새가 귀엽죠? '
changeBlanktoBird(A) //'🐤안녕하세요🐤호소세입니다.🐤새가🐤귀엽죠?🐤'
저는 개인적으로 저기 저 짧은 코드를 가진 선언형이 좋은데, 뭔가 가져다 쓰다 보면 창의력이 떨어질 것 같은 기분이 듭니다. 프로토타입에 숨어있는 함수들을 직접 만들어보면서 어렵다는 것을 느꼈고, 한번씩 만들어보는 것도 좋을 것 같습니다.
함수형 프로그래밍의 특징
- 순수 함수 (Pure Function)
- 함수에서 외부의 상태값을 참조하거나 외부의 상태를 변경하는 것은 순수함수가 아닙니다.
- 비상태, 불변성 (Stateless, Immutability)
- 함수에 인자로 전달된 데이터를 변경하는 것은 함수형이 아닙니다.
- 새로운 버전의 새로운 오브젝트를 만들어서 결과값으로 전달해야합니다. (No SideEffect!!! 외부의 상태가 변경되거나 예상치 못한 에러가 발생하기 때문에 그렇다고 합니다.)
- 여러가지 멀티 스레딩 환경에서도 안정적으로 사용 가능합니다.
- Expression Only
- if, swith, for 과 같은 여러가지 문장을 사용하는 것은 함수형이 아닙니다!
- expression을 사용해서 작성해야합니다.
- First-class & higher-order function
- 함수를 변수로 할당하거나 함수에 인자로 전달하거나 리턴하는 등의 일들을 할 수 있는 First Class 특징
- 함수에서 또 다른 함수를 리턴하는 고차함수
결론
목표지점에 도달하는데 어떤 방법을 쓰느냐에 대해서 싸우는 것은 이상한 짓이다. 자신이 원하는 방법을 사용해서 목표에 도달하면 되는데 만만약 2000km 떨어진 곳에 가기 위해 바다와 산 , 거대한 벽을 지나야한다면 각각의 상황에 맞는 여러 교통수단을 타야 갈 수 있을 것입니다. 이처럼 저희가 가는 목표를 가기 위해서 객체지향 프로그래밍, 함수형 프로그래밍 등을 전부 다 조화롭게 이용한다면 더 수월하게 목표에 도달 할 수 있을 것이라고 생각됩니다.
반응형