리팩토링 자바스크립트

고객평점
저자에반 버차드
출판사항길벗, 발행일:2018/10/12
형태사항p.504 B5판:24
매장위치컴퓨터부(B2) , 재고문의 : 051-816-9500
ISBN9791160505894 [소득공제]
판매가격 36,000원   32,400원  (인터넷할인가:10%)
포인트 1,620점
배송비결제주문시 결제
  • 주문수량 

총 금액 : 0원

책 소개

지저분한 코드, 나쁜 코드에서 벗어나고 싶다면
 리팩토링에 집중하라!

코드 변경과 리팩토링을 구분하자
 코드 변경과 리팩토링은 다르다. 리팩토링은 코드를 변경하는 방법 중 하나이지만, ‘코드의 동작’은 바꾸면 안 된다는 제약이 있다. 즉, 리팩토링은 코드의 동작을 변경하지 않고 품질을 향상시키기 위해 구현 세부 사항을 변경하는 것이다. 코드 변경과 리팩토링의 차이점을 명확하게 구분하자.

실제 사용되는 코드로 실행하며 이해하자
 테스트 방법과 변수 이름 다시 짓기와 같은 간단한 리팩토링부터 계층 구조, OOP 패턴, 비동기, 함수형 프로그래밍 원리를 적용하는 리팩토링까지 다양한 주제에 걸쳐 문제를 보여주고 이를 해결한다. 실제 사용할 수 있는 코드를 수록했고, 코드를 직접 실행해보고 수정하며 내용을 확실하게 이해할 수 있다.

최신 기능을 사용해 최선의 방법을 배우자
 모든 코드가 최신 ES6를 기준으로 한다. 특정 데이터 구조를 리팩토링하는 방법, 기능적 접근법을 사용할 때 리팩토링하는 방법, OOP 접근법 및 기타 여러 가지 일반적인 상황을 포함한 상황에서 최선의 리팩토링에 대한 아이디어를 제시한다. 코드의 품질을 향상시키고 리팩토링에 대한 관점을 넓히려는 개발자에게 유용할 것이다. 

작가 소개

지은이 : 에반 버차드
웹 개발 컨설턴트이자 <Web Developer Cookbook Game>(Addison-Wesley, 2013)의 저자이다. 오프라인에서 실제 얼음 조각을 쌓아 올리는 운동 게임을 디자인하고 상을 받았으며, 주기적으로 미국 전역을 걷는 프로젝트를 진행한다.

 

옮긴이 : 김건희 
처음 접해본 프로그래밍 언어가 자바스크립트였고, 여러 플랫폼을 자바스크립트 기반의 Node.js와 React로 구축해왔다. 유연하면서도 확장 가능성이 많은 자바스크립트에 큰 매력을 느껴 지속적으로 깊게 공부하고 있다. 

 

목 차

1장 리팩토링이란?
1.1 코드 동작이 변하지 않는다는 것을 어떻게 보장할 수 있을까?
1.2 구현 세부 사항에 관심을 두면 어떨까?
1.3 불특정하고 검증되지 않은 동작에 관심을 두면 어떨까?
1.4 성능에 관심을 두면 어떨까?
1.5 동작이 변하지 않는다면 리팩토링의 요점은?
1.6 품질 균형 잡기와 일 끝마치기
1.7 품질이란 무엇이며 리팩토링과 어떤 관련이 있을까?
1.8 탐험으로서 리팩토링
1.9 어떤 것이 리팩토링이고 어떤 것이 아닐까?
1.10 마무리

2장 어떤 자바스크립트를 사용하고 있을까?
2.1 버전 및 사양
2.2 플랫폼과 구현
2.3 미리 컴파일된 언어
2.4 프레임워크
2.5 라이브러리
2.6 어떤 자바스크립트가 필요할까?
2.7 우리는 어떤 자바스크립트를 사용하고 있을까?
2.8 마무리

3장 테스트
3.1 테스트를 해야 하는 많은 이유
3.2 여러 가지 테스트 방법
3.2.1 수동 테스트
3.2.2 문서화된 수동 테스트
3.2.3 승인 테스트
3.2.4 종단 간 테스트
3.2.5 단위 테스트
3.2.6 비기능적 테스트
3.2.7 기타 유익한 테스트 유형
3.3 도구와 절차
3.3.1 품질 절차
3.3.2 품질 도구
3.4 마무리

4장 테스트 실습
4.1 처음부터 새로운 코드 만들기
4.2 테스트 주도 개발로 처음부터 새로운 코드 만들기
4.3 테스트되지 않은 코드와 특성화 테스트
4.4 디버깅과 회귀 테스트
4.5 마무리

5장 기본적인 리팩토링 목표
5.1 대규모 함수
5.2 입력
5.3 출력
5.4 부가 작용
5.5 상황 1: 암시적 입력
5.5.1 Strict 모드에서 this
 5.6 상황 2: 비공개
5.6.1 자바스크립트에도 비공개가 있을까?
5.7 마무리

6장 간단한 구조 리팩토링
6.1 코드
6.2 확신 전략
6.3 이름 바꾸기
6.4 불필요한 코드
6.4.1 죽은 코드
6.4.2 코드 추측과 주석
6.4.3 공백
6.4.4 아무것도 하지 않는 코드
6.4.5 디버깅·로깅 구문
6.5 변수
6.5.1 매직 넘버
6.5.2 긴 코드 줄: 파트 1(변수)
6.5.3 인라인 함수 호출
6.5.4 변수 도입(소개)
6.5.5 변수 호이스팅
6.6 문자열
6.6.1 문자열 연결, 매직, 템플릿
6.6.2 문자열을 처리하는 기본 정규식
6.6.3 긴 코드 줄: 파트 2(문자열)
6.7 배열을 이용한 작업: 반복문, forEach, map
 6.7.1 긴 코드 줄: 파트 3(배열)
6.7.2 어떤 반복문을 선택할까?
6.7.3 반복문보다 나은 선택
6.8 마무리

7장 리팩토링 함수와 객체
7.1 개선된 코드
7.2 배열과 객체 대안
7.2.1 배열 대안: Set
 7.2.2 배열 대안: 객체
7.2.3 객체 대안: Map
 7.2.4 배열 대안: 비트 필드
7.3 가진 것 테스트
7.3.1 설정 테스트
7.3.2 classify를 위한 특성화 테스트
7.3.3 welcomeMessage 테스트
7.3.4 labelProbabilities 테스트
7.4 함수 추출
7.4.1 절차 코드 제거
7.4.2 익명 함수 추출과 이름 짓기
7.4.3 함수 호출과 리터럴 함수
7.5 하나의 전역 객체로 API 간소화
7.5.1 classifier 객체 추출
7.5.2 setup 함수 인라인화
7.5.3 songList 객체 추출
7.5.4 남은 전역 변수 처리
7.5.5 프로그램에서 데이터를 독립적으로 만들기
7.5.6 범위 지정 선언: var, let, const
 7.5.7 classifier로 classify 가져오기
7.5.8 중복 값 해결
7.5.9 중복 정보가 있는 객체
7.5.10 classifier로 다른 함수와 변수 가져오기
7.5.11 짧은 구문: Arrow, 객체 함수, 객체
7.5.12 생성자 함수로 새로운 개체 얻기
7.5.13 생성자 함수 vs 팩토리 함수
7.5.14 Classifier를 위한 클래스
7.5.15 API 선택
7.5.16 비공개
7.5.17 새 문제 영역에 분류자 적용
7.6 마무리

8장 계층 구조 내부의 리팩토링
8.1 CRUD 애플리케이션과 프레임워크
8.2 계층 구조 구축하기
8.3 계층 구조 파헤치기
8.3.1 생성자 함수
8.3.2 리터럴 객체
8.3.3 팩토리 함수
8.3.4 계층 구조를 위한 선택 항목 평가
8.4 상속과 구조
8.4.1 왜 몇몇 사람은 클래스를 싫어할까?
8.4.2 다중 상속은 어떨까?
8.4.3 어떤 인터페이스를 원하는가?
8.5 Has-A 관계
8.6 좋지 않은 상속 패턴
8.6.1 과도한 상속
8.6.2 늑대가 키운 염소와 양배추
8.7 마무리

9장 OOP 패턴으로 리팩토링
9.1 템플릿 메서드
9.1.1 기능적 변형
9.2 전략
9.3 상태
9.4 null 객체
9.5 래퍼(데코레이터와 어댑터)
9.6 퍼사드
9.7 마무리

10장 비동기 리팩토링
10.1 왜 비동기인가?
10.2 피라미드 운명 수정
10.2.1 포함 객체로 함수 추출
10.2.2 비동기 프로그램 테스트
10.2.3 추가 테스트 고려 사항
10.3 콜백과 테스트
10.3.1 CPS와 IoC 기본
10.3.2 콜백 스타일 테스트
10.4 프로미스
10.4.1 프로미스 인터페이스의 기본
10.4.2 프로미스의 생성 및 사용
10.4.3 프로미스 테스트
10.5 마무리

11장 함수형 프로그래밍
11.1 함수형 프로그래밍의 제약과 이점
11.1.1 제약
11.1.2 이점
11.1.3 함수형 프로그래밍의 전망(추측)
11.2 함수형 프로그래밍 기초
11.2.1 파괴적인 동작, 변경, 재할당 방지
11.2.2 null은 반환하지 말자!
11.2.3 참조적 투명성 및 상태 회피
11.2.4 무작위 처리
11.2.5 비순수 함수 멀리하기
11.3 고급 함수형 프로그래밍
11.3.1 커링과 부분 적용, 람다와 함께
11.3.2 함수 구성
11.3.3 최소한의 타입
11.4 브리또
11.4.1 Sanctuary 소개
11.4.2 다시 살펴보는 null 객체 패턴
11.4.3 Maybe를 이용한 함수형 리팩토링
11.4.4 Either를 이용한 함수형 리팩토링
11.5 브리또 배우고 사용하기
11.6 OOP에서 FP로 이동하기
11.6.1 나이브 베이즈 분류기의 귀환
11.6.2 재작성
11.7 마무리

역자 소개

01. 반품기한
  • 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
  • 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
02. 반품 배송비
반품 배송비
반품사유 반품 배송비 부담자
단순변심 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다.
상품의 불량 또는 오배송 고객 부담이 아닙니다.
03. 배송상태에 따른 환불안내
환불안내
진행 상태 결제완료 상품준비중 배송지시/배송중/배송완료
어떤 상태 주문 내역 확인 전 상품 발송 준비 중 상품이 택배사로 이미 발송 됨
환불 즉시환불 구매취소 의사전달 → 발송중지 → 환불 반품회수 → 반품상품 확인 → 환불
04. 취소방법
  • 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
  • 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
05. 환불시점
환불시점
결제수단 환불시점 환불방법
신용카드 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) 신용카드 승인취소
계좌이체 실시간 계좌이체 또는 무통장입금
취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준)
계좌입금
휴대폰 결제 당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소
전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준)
당일취소 : 휴대폰 결제 승인취소
익월취소 : 계좌입금
포인트 취소 완료 후, 당일 포인트 적립 환불 포인트 적립
06. 취소반품 불가 사유
  • 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
  • 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
  • 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
  • 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
  • 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
  • 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.

환불불가
상품군 취소/반품 불가사유
의류/잡화/수입명품 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우
계절상품/식품/화장품 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우
가전/설치상품 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.)
자동차용품 상품을 개봉하여 장착한 이후 단순변심의 경우
CD/DVD/GAME/BOOK등 복제가 가능한 상품의 포장 등을 훼손한 경우
내비게이션, OS시리얼이 적힌 PMP 상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우
노트북, 테스크탑 PC 등 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우