본문 바로가기

분류 전체보기

(180)
함수형 자바스크립트 [6장] ※ 함수형 자바스크립트 라는 책을 한 장씩 리뷰해보도록 하겠습니다. Chapter 6. 빈틈없는 코드 만들기 함수형 코드를 작성한 다음, 제대로 작동하는지 확인하기 위해선 테스트 코드를 작성해서 의도한 대로 움직이는지 알아봐야 합니다. 단위 테스트의 목적은 코드가 개발 명세를 충족하는지 확인하고 코드가 실패하는 모든 경계 조건 주변에 담장을 치는 것입니다. 이번 장에서는 대부분의 다른 패러다임에서 일부러 테스트하기 쉽게 코드를 설계하는 것과 달리, 함수형 코드는 왜 그자체로 테스트하기 좋은지 알아 볼 것입니다. 6.1 함수형 프로그래밍과 단위 테스트 테스트는 아래와 같이 세 가지로 분류합니다. 인수 테스트 : 소프트웨어 패러다임과 무관 통합 테스트 : FP 는 코드에 존재하는 여러 모듈을 합리적으로 통합..
함수형 자바스크립트 [5장] ※ 함수형 자바스크립트 라는 책을 한 장씩 리뷰해보도록 하겠습니다. Chapter 5. 복잡성을 줄이는 디자인 패턴 "널 참조는 10억 달러짜리 실수다" 프로그램 실행 중 여러 케이스 (예외, 네크워크 에러 등) 에 의해 데이터가 null, undefined 로 세팅되면서 생기는 문제를 대비하기 위해 코딩을 하다보면 코드는 점점 복잡해집니다. 이런 복잡성을 해결하기 위해 함수자 (함수 매핑이 가능한 단순 자료형을 생성하는 것) 라는 개념을 보도록 하겠습니다. 다양한 방식으로 에러를 처리하는 로직이 들어 있는 모나드 라는 자료형에 함수자를 적용합니다. (모나드 : 범주론 이란 수학분야에서 비롯된 결과물) 5.1 명령형 에러 처리의 문제점 명령형 코드는 대부분 try - catch 구문으로 예외를 처리합니다..
함수형 자바스크립트 [4장 - (2)] ※ 지난번 4장 리뷰를 이어가도록 하겠습니다. Chapter4. 재사용 가능한, 모듈적인 코드로 4.5 함수 파이프라인을 합성 함수형 프로그램의 목표는, 함수형 사상의 중추인 합성을 유도하는데 필요한 자료구조를 얻는 것입니다. 합성을 하기위해선, 반드시 함수에서 부수효과를 없애야 합니다. 4.5.1 HTML 위젯에서 합성하기 중요한 내용은 없으니 생략하겠습니다. 4.5.2 함수 합성 : 서술과 평가를 구분 함수 합성이란 한마디로 복잡한 작업을 한데 묶어 간단한 작업으로 쪼개는 과정입니다. 먼저 람다JS 의 R.compose 로 두 순수함수를 합성하는 예시를 보겠습니다. const str = `We can only see a short distance ahead but we can see plenty th..
[Node.js] Http 라이브러리 비교 1. Node.js 내장 http 라이브러리 Node.js 는 별다른 외부 라이브러리를 사용하지 않아도 기본 내장 모듈로 http 를 지원하고있어 이를 이용해 다른 서버에 요청을 보내고 응답을 받아올 수 있습니다. 하지만 기본 http 라이브러리는 아주 기본적인 기능만 사용하려해도 상당히 귀찮은 작업을 일일이 해줘야 합니다. const requestData = querystring.stringify({ id: 1, name: 'peter' }); const options = { hostname: 'www.example.com', port: 80, path: '/upload', method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlen..
함수형 자바스크립트 [4장 - (1)] ※ 함수형 자바스크립트 라는 책을 한 장씩 리뷰해보도록 하겠습니다. 4장은 내용이 길어서 두개의 포스팅으로 나눠서 작성하겠습니다. Chapter 4. 재사용 가능한, 모듈적인 코드로 "잘 작동하는 복잡한 시스템은 십중팔구 잘 작동했던 단순한 시스템에서 진화한 경우가 많다" 모듈성 이란, 프로그램을 더 작고 독립적인 부분으로 나눌 수 있는 정도를 뜻합니다. 모듈적 프로그램은 자신을 구성하는 부속들로부터 자신의 의미를 도출할 수 있다는 특별한 점이 있습니다. 부속 (하위 프로그램) 은 다른 시스템에 그대로 혹은 더 잘게 쪼개서 통합할 수 있는 재사용 가능 컴포넌트이며 개발자의 생산성 및 유지보수, 가독성을 향상시키는데 큰 도움이 됩니다. 4.1 메서드 체인 대 함수 파이프 라인 3장에서 본 메서드 체인과 별..
함수형 자바스크립트 [3장] ※ 함수형 자바스크립트 라는 책을 한 장씩 리뷰해보도록 하겠습니다. Chapter 3. 자료구조는 적게, 일은 더 많이 "계산 프로세스는 컴퓨터에 내재하는 추상적인 존재다. 이들이 점점 진화하면서 프로세스는 데이터라는 또 다른 추상적인 존재에 영향을 끼친다." 3장에서는, 이전 장에서 함수를 순수하게 만드는 법에 대해 알아보았으니 이것들을 서로 연결하는 방법을 알아보겠습니다. 자료구조를 순차적으로 탐색/변환하는 데 쓰이는 실용적인 연산들 (map, reduce, filter 등등) 과 로대시JS 에 대해 볼 것입니다. 이런 도구들을 통해 메인 로직에서 제어 흐름을 명확하게 분리하여 간결하고 확장성 좋은 선언적 프로그램을 작성할 수 있습니다. 3.1 어플리케이션의 제어 흐름 프로그램이 정답에 이르기까지 거..
함수형 자바스크립트 [2장] ※ 함수형 자바스크립트 라는 책을 한 장씩 리뷰해보도록 하겠습니다. Chapter 2. 고계 자바스크립트 " 자연어는 지배적인 패러다임이 없습니다. 자바스크립트도 마찬가지입니다. 개발자들은 절차적, 함수형, 객체지향형 접근 방법이 들어 있는 손가방에서 적절히 골라 섞어 쓰면 됩니다." 이번 장에서는 자바스크립트가 함수형 언어로서 손색이 없는 이유 및 미흡한 점과 함께 고계함수, 클로저까지 보도록 하겠습니다. 2.1 왜 자바스크립트인가? 자바스크립트의 장점은 편재성 (어디에나 있음) 입니다. 동적 형식이고 객체지향적 범용 언어이자 가장 널리 쓰이기 때문입니다. 자바스크립트 구문은 C 언어와 비슷하지만 리스프(Lisp), 스킴(Scheme) 같은 함수형 언어의 영향을 많이 받았습니다. 리스프, 스킴의 공통점..
함수형 자바스크립트 [1장] ※ 함수형 자바스크립트 라는 책을 한 장씩 리뷰해보도록 하겠습니다. Chapter 1. 함수형 길들이기 " 객체지향은 가동부를 캡슐화하여 코드의 이해를 돕는다. 함수형 프로그래밍은 가동부를 최소화하여 코드의 이해를 돕는다" 어플리케이션 아키텍쳐를 구축하는데에 있어 어떤 문제는 객체지향 설계 방식으로 해결이 가능하나, 자바스크립트는 동적인 언어라 덩어리가 커지면 복잡해지고 가독성이 떨어지며 관리가 힘들어지는 문제점이 있습니다. 이러한 문제와 멀어지기 위해 어플리케이션 설계시 중요하게 봐야할 요소는 아래와 같습니다. 확장성 : 추가 기능을 지원하기 위해 계속 코드를 리팩토링해야 하는가? 모듈화 용이성 : 파일 하나를 고치면 다른 파일도 영향을 받는가? 재사용성 : 중복이 많은가? 테스트성 : 함수를 단위 테..