본문 바로가기

책 리뷰

(20)
엘레강트 오브젝트 [2장 - (1)] ⌗ 엘레강트 오브젝트 책을 리뷰해보도록 하겠습니다. 책의 내용은 다양한 언어로 되어있지만, 저는 예시 코드로 Typescript 를 사용해 제 사족을 조금씩 붙일 예정입니다. Chapter2. Education 이번 챕터의 메인 주제는 '객체는 작아야 한다' 입니다. 객체가 작아야만 유지보수에 용이한 우아한 객체라고 할 수 있습니다. 그렇게 만들 수 있는 방법을 보도록 하겠습니다. 가능하면 적게 캡슐화하세요 4개 또는 그 이하의 객체를 캡슐화할 것을 권장합니다. 더 많은 객체를 캡슐화해야 한다면, 클래스에 문제가 있는 것이기 때문에 리팩토링이 필요하다고 볼 수 있습니다. class Cash { private digits: number; private cents: number; private currenc..
엘레강트 오브젝트 [1장 - (2)] ⌗ 엘레강트 오브젝트 책을 리뷰해보도록 하겠습니다. 책의 내용은 다양한 언어로 되어있지만, 저는 예시 코드로 Typescript 를 사용해 제 사족을 조금씩 붙일 예정입니다. 생성자 하나를 주 생성자로 만드세요 class Cash { private dollars: number; public constructor(dollars: number) { this.dollars = dollars; } } constructor(생성자) 는 새로운 객체에 대한 진입점입니다. 위 예시처럼 생성자는 몇 개의 인자들을 전달받아 어떤 일을 수행한 후 객체를 준비시킵니다. 이 책의 저자는 올바른 클래스의 설계 결과물로 많은 수의 생성자와 적은 수의 메서드를 얘기하고 있습니다. 이 책에선 예시에 Java 코드를 활용해 여러 개의..
엘레강트 오브젝트 [1장 - (1)] ⌗ 엘레강트 오브젝트 책을 리뷰해보도록 하겠습니다. 책의 내용은 다양한 언어로 되어있지만, 저는 예시 코드로 Typescript 를 사용해 제 사족을 조금씩 붙일 예정입니다. Chapter1. Birth if (price < 100) { const extra: Cash = new Cash(5); price.add(extra); } 객체는 자신의 가시성 범위 안에서 살아갑니다. 위 예제에서 if 블록 안에서만 extra 라는 객체를 볼 수 있기 때문에, if 블록 내부가 extra 객체의 가시성 범위가 됩니다. 객체는 살아있는 유기체이기에 가시성 범위가 중요하고, 살아있게 만들기 전에 객체의 환경을 정의해야 합니다. 무엇이 객체 외부에 있고, 내부에 남아있는지를 구분하는 것으로 이 주제를 시작합니다. -e..
함수형 자바스크립트 [8장] ※ 함수형 자바스크립트 라는 책을 한 장씩 리뷰해보도록 하겠습니다. 어느덧 마지막 장 입니다. Chapter 8. 비동기 이벤트와 데이터를 관리 " 함수형 프로그래머는 함수형 프로그래밍이 엄청나게 유익하다고 주장합니다. 기존 프로그램보다 한 자릿수나 더 짧은 함수형 프로그램이 생산성은 외려 한 자릿수 더 생산적이라고 하지요 " 이번 장에서는 프로그램의 실행을 그대로 좇아가지 않는 코드에서 비동기 데이터 흐름과 관련된, 실세계의 자바스크립트 난제들을 리액티브 프로그래밍을 활용해 ES6 프로미스와 함수형 프로그램을 접목시켜 콜백 코드를 우아한 표현식으로 변경하는 방법을 볼 것입니다. 8.1 골칫덩이 비동기 코드 자바스크립트 프로그램은 사용자의 필요에 따라 여러 비동기 요청을 동시에 전송해 데이터를 페이지에 ..
함수형 자바스크립트 [7장] ※ 함수형 자바스크립트 라는 책을 한 장씩 리뷰해보도록 하겠습니다. Chapter 7. 함수형 최적화 " 자그마한 효율은 그냥 잊으세요. 대략 97%의 경우 어설픈 최적화가 모든 걸 망쳐놓는 원인이 됩니다. 하지만 나머지 결정적 3%는 최적화할 기회를 절대로 놓쳐서는 안 됩니다. " 이번 장에서는 느긋한 평가, 메모화, 꼬리 호출 최적화 함수형 최적화 기법에 대해 다룰 것입니다. 함수형 프로그래밍은 개별 함수의 평가 속도를 올리기보다는 주로 함수 중복 호출을 피해 코드가 정말 필요할 때까지 평가를 지연시키는 전략을 구사합니다. 7.1 함수 실행의 내부 작동 원리 자바스크릡트에서는 함수를 호출할 때마다 함수 컨텍스트 스택에 레코드 (프레임) 가 생성됩니다. 전역 컨텍스트 프레임은 항상 스택 맨 밑에 위치합..
함수형 자바스크립트 [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..