간편결제, 신용카드 청구할인
삼성카드 6% (22,000원)
(삼성카드 6% 청구할인)
인터파크 롯데카드 5% (22,230원)
(최대할인 10만원 / 전월실적 40만원)
북피니언 롯데카드 30% (16,380원)
(최대할인 3만원 / 3만원 이상 결제)
NH쇼핑&인터파크카드 20% (18,720원)
(최대할인 4만원 / 2만원 이상 결제)
Close

리팩토링: 루비 에디션 : 버그 없이 프로그램을 개선시키는 최고의 방법

원제 : REFACTORING: RUBY EDITION
소득공제

2013년 9월 9일 이후 누적수치입니다.

판매지수 29
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
공유하기
정가

26,000원

  • 23,400 (10%할인)

    1,300P (5%적립)

할인혜택
적립혜택
  • I-Point 적립은 출고완료 후 14일 이내 마이페이지에서 적립받기한 경우만 적립됩니다.
추가혜택
배송정보
주문수량
감소 증가
  • 이벤트/기획전

  • 연관도서

  • 사은품(10)

출판사 서평

초 베스트셀러 [리팩토링]의 루비 완결판!
리팩토링 원판 독자도 다시 읽어봐야 할 책!
루비와 자바 프로그래머뿐만이 아닌 모든 개발자들이 소유해야 할 책!


리팩토링을 통해 프로그래머는 엉망진창인 소프트웨어를 기능 개선과 유지보수가 쉬운 깔끔한 설계의 시스템으로 바꿀 수 있다. 이 책은 마틴 파울러의 기존 리팩토링 원판 교재를 바탕으로 루비 예제와 적용 방법을 수록하였으며, 또한 수많은 수정과 보완을 거쳐 루비 사용자뿐만이 아닌 리팩토링에 관심 있는 모든 개발자들에게 유익한 교재로 출간되었다.

필자들은 검증된 70개 이상의 리팩토링 기법을 단계적인 실시 방법, 원리를 보여주는 예제 코드와 함께 자세히 설명하고 있으며, 리팩토링 기법 중 대부분은 강력한 루비 전용 기능을 이용한 것들이다.

마틴 파울러의 원본 교재 개념들을 이용하여 계획적이고, 효율적이며, 단계적으로 리팩토링을 실시하는 방법을 설명한 이 책은 새로운 버그가 생기지 않게 자신의 코드 구조를 체계적으로 개선할 수 있도록 하였다. 코드를 작성하거나 유지보수하는 프로젝트에서 자신이 맡은 분야가 무엇이든지에 상관없이 이 책의 내용은 반드시 알아야 할 것이다.

이 책을 통해 다음의 것들을 배울 수 있다.

- 리팩토링의 주요 원칙과 리팩토링 실시 이유를 이해한다.
- 루비 코드에서 구린내를 감지할 수 있다.
- 잘못된 설계를 수정하여 체계적 설계의 코드로 만들 수 있다.
- 테스트를 작성해서 리팩토링이 제대로 되는지 확인할 수 있다.
- 리팩토링의 문제점과 해결 방법을 알 수 있다.
- 비슷한 기능의 코드끼리 묶이게 메서드를 구성할 수 있다.
- 객체에서 객체로 기능을 옮겨서 적절한 곳에 배치할 수 있다.
- 데이터를 연동하기 쉽게 정리할 수 있다.
- 조건식을 단순화하고 재정의 사용을 보다 효율적으로 수정할 수 있다.
- 알기 쉽고 사용하기 편한 인터페이스를 작성할 수 있다.
- 보다 효과적으로 일반화할 수 있다.
- 수개월에서 수년에 걸쳐 소프트웨어 시스템 전체를 수정하는 비교적 대규모의 리팩토링을 실시할 수 있다.
- 루비온레일스 코드를 성공적으로 리팩토링할 수 있다.

목차

CHAPTER 1 리팩토링 첫 예제
원래의 프로그램
리팩토링 첫 단계
statement 메서드 분해와 기능 재분배
가격 책정 부분의 조건문을 재정의로 전환
고찰

CHAPTER 2 리팩토링 원리
리팩토링의 유래
리팩토링의 정의
리팩토링은 왜 해야 하나?
리팩토링은 어떨 때 필요한가?
리팩토링의 효용성
관리자에게 어떻게 말을 꺼내나?
인다이렉션과 리팩토링
리팩토링 관련 문제들
리팩토링과 설계
빈 날짜 인스턴스 생성으로 인한 시간 낭비
리팩토링과 성능
급여 시스템 최적화

CHAPTER 3 코드의 구린 부분
중복 코드(Duplicated Code)
장황한 메서드(Long Method)
방대한 클래스(Large Class)
과다한 매개변수(Long Parameter List)
수정의 산발(Divergent Change)
기능의 산재(Shotgun Surgery)
잘못된 소속(Feature Envy)
데이터 뭉치(Data Clumps)
강박적 기본 타입 사용(Primitive Obsession)
Case문(Case Statements)
평행 상속 계층(Parallel Inheritance Hierarchies)
직무유기 클래스(Lazy Class)
막연한 범용 코드(Speculative Generality)
임시 필드(Temporary Field)
메시지 체인(Message Chains)
과잉 중개자(Middle Man)
지나친 관여(Inappropriate Intimacy)
인터페이스가 다른 대용 클래스(Alternative Classes with Different Interfaces)
미흡한 라이브러리 클래스(Incomplete Library Class)
데이터 클래스(Data Class)
방치된 유품(Refused Bequest)
불필요한 주석(Comments)
메타프로그래밍 과용(Metaprogramming Madness)
API 비일관성(Disjointed API)
상투적 코드 반복(Repetitive Boilerplate)

CHAPTER 4 테스트 작성
자가 테스트 코드의 가치
Test::Unit 테스트 프레임워크
개발자 테스트와 품질보증 테스트
테스트 추가

CHAPTER 5 리팩토링 열거에 대하여
리팩토링 설명 구성
참조 검색

CHAPTER 6 메서드 정리
메서드 추출(Extract Method)
메서드 내용 직접 삽입(Inline Method)
임시변수 내용 직접 삽입(Inline Temp)
임시변수를 메서드 호출로 전환(Replace Temp with Query)
임시변수를 메서드 체인으로 전환(Replace Temp with Chain)
직관적 임시변수 사용(Introduce Explaining Variable)
임시변수 분리(Split Temporary Variable)
매개변수로의 값 대입 제거(Remove Assignments to Parameters)
메서드를 메서드 객체로 전환(Replace Method with Method Object)
알고리즘 전환(Substitute Algorithm)
루프를 컬렉션 클로저 메서드로 전환(Replace Loop with Collection Closure Method)
주변 메서드 추출(Extract Surrounding Method)
클래스 애너테이션 넣기(Introduce Class Annotation)
매개변수 세트를 해시로 전환(Introduce Named Parameter)
해시를 매개변수 세트로 전환(Remove Named Parameter)
비사용 기본 값 매개변수 제거(Remove Unused Default Parameter)
동적 메서드 정의(Dynamic Method Definition)
수신 메서드를 동적 메서드 정의로 전환(Replace Dynamic Receptor with Dynamic Method Definition)
동적 수신 메서드 분리(Isolate Dynamic Receptor)
eval을 런타임에서 파싱타임으로 전환(Move Eval from Runtime to Parse Time)

CHAPTER 7 객체 간의 기능 이동
메서드 이동(Move Method)
필드 이동(Move Field)
클래스 추출(Extract Class)
클래스 내용 직접 삽입(Inline Class)
대리 객체 은폐(Hide Delegate)
과잉 중개자 제거(Remove Middle Man)

CHAPTER 8 데이터 체계화
필드 자체 캡슐화(Self Encapsulate Field)
데이터 값을 객체로 전환(Replace Data Value with Object)
값을 참조로 전환(Change Value to Reference)
참조를 값으로 전환(Change Reference to Value)
배열을 객체로 전환(Replace Array with Object)
해시를 객체로 전환(Replace Hash with Object)
클래스의 단방향 연결을 양방향으로 전환(Change Unidirectional Association to Bidirectional)
클래스의 양방향 연결을 단방향으로 전환(Change Bidirectional Association to Unidirectional)
마법 숫자를 기호 상수로 전환(Replace Magic Number with Symbolic Constant)
컬렉션 캡슐화(Encapsulate Collection)
레코드를 데이터 클래스로 전환(Replace Record with Data Class)
타입 코드를 재정의로 전환(Replace Type Code with Polymorphism)
타입 코드를 모듈 확장으로 전환(Replace Type Code with Module Extension)
타입 코드를 상태/전략 패턴으로 전환(Replace Type Code with State/Strategy)
하위클래스를 필드로 전환(Replace Subclass with Fields)
속성 초기화를 사용 시로 미루기(Lazily Initialized Attribute)
속성 초기화를 생성 시로 당기기(Eagerly Initialized Attribute)

CHAPTER 9 조건문 간결화
조건문 쪼개기(Decompose Conditional)
조건문 개조(Recompose Conditional)
중복 조건식 통합(Consolidate Conditional Expression)
조건문의 공통 실행 코드 빼내기(Consolidate Duplicate Conditional Fragments)
제어 플래그 제거(Remove Control Flag)
여러 겹의 조건문을 감시 절로 전환(Replace Nested Conditional with Guard Clauses)
조건문을 재정의로 전환(Replace Conditional with Polymorphism)
Null 검사를 널 객체에 위임(Introduce Null Object)
어설션 넣기(Introduce Assertion)

CHAPTER 10 메서드 호출 단순화
메서드명 변경(Rename Method)
매개변수 추가(Add Parameter)
매개변수 제거(Remove Parameter)
상태 변경 메서드와 값 반환 메서드를 분리(Separate Query from Modifier)
유사 메서드를 매개변수로 전환(Parameterize Method)
매개변수를 개별 메서드로 전환(Replace Parameter with Explicit Methods)
객체를 통째로 전달(Preserve Whole Object)
매개변수를 메서드로 추출(Replace Parameter with Method)
매개변수 세트를 객체로 전환(Introduce Parameter Object)
쓰기 메서드 제거(Remove Setting Method)
메서드 은폐(Hide Method)
생성자를 팩토리 메서드로 전환(Replace Constructor with Factory Method)
에러 코드를 예외로 교체(Replace Error Code with Exception)
예외를 테스트로 교체(Replace Exception with Test)
게이트웨이 넣기(Introduce Gateway)
익스프레션 빌더 넣기(Introduce Expression Builder)

CHAPTER 11 일반화 처리
메서드 상향(Pull Up Method)
메서드 하향(Push Down Method)
모듈 추출(Extract Module)
모듈 내용 직접 삽입(Inline Module)
하위클래스 추출(Extract Subclass)
상속 구조로 전환(Introduce Inheritance)
계층 병합(Collapse Hierarchy)
템플릿 메서드 형성(Form Template Method)
상속을 위임으로 전환(Replace Inheritance with Delegation)
위임을 계층구조로 전환(Replace Delegation with Hierarchy)
추상 상위클래스를 모듈로 전환(Replace Abstract Superclass with Module)

CHAPTER 12 대규모 리팩토링
알아야 할 특성
대규모 리팩토링의 중요성
대규모 리팩토링 4개
상속 구조 정리(Tease Apart Inheritance)
절차 코드를 객체로 전환(Convert Procedural Design to Objects)
도메인 로직을 표현과 분리(Separate Domain from Presentation)
계층구조 추출(Extract Hierarchy)

CHAPTER 13 퍼즐 조립
참고 문헌
리팩토링 기법 찾아보기
미심쩍은 상황별 기법

저자소개

마틴 파울러(Martin Fowler) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

지난 십여 년 이상 까다로운 비즈니스 문제에 객체를 적용해 해결하는 방법을 전문적으로 연구한 독립 컨설턴트다. 특히 보건, 금융거래, 기업재정 등 다양한 분야의 시스템에 대한 컨설팅을 수행했으며 주요 고객사로는 크라이슬러, 시티뱅크, 영국 국립보건원, 앤더슨 컨설팅, 넷스케이프 커뮤니케이션 등이 있다. 또한 파울러는 다양한 행사에서 객체, UML(Unified Modeling Language), 패턴 등의 주제에 대한 강연자로 꾸준히 활동하고 있다.

생년월일 -
출생지 -
출간도서 0종
판매수 0권

소프트웨어 패턴 운동의 선구자 중 한 명이며, CRC 카드와 HotDraw 드로잉 에디터 프레임워크, xUnit 유닛 테스팅 프레임워크를 개발했고, 리팩토링과 테스트 주도 개발을 소개했다. 또한 기민한 방법론(Agile Methodology) 중 가장 널리 알려진 익스트림 프로그래밍(Extreme Programming, XP)의 아버지다. 피플웨어로 유명한 톰 디마르코(Tom DeMarco)는 2001년 OOPSLA 컨퍼런스에서 "켄트 벡은 CMM 개발을 지휘한 와츠 험프리가 지난 10년 간 중요했던 것보다 더 중요해질 것"이라고 말했다. 켄트 벡은 현재 Three Rivers Institute 소속이다. 저술한 책으로는 Smallta

펼쳐보기
제이 필즈(Jay Fields) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

DRW Trading의 소프트웨어 개발자이며, 여러 컨퍼런스에서 강연자로 자주 나간다. 제이는 혁신적인 솔루션을 발견하고 발전시키는 일에 열정을 갖고 있다. 그의 홈페이지는 www.jayfields.com이다.

셰인 하비(Shane Harvie) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

미국, 인도, 호주에서 애자일 환경의 소프트웨어를 개발해왔다. 셰인은 시카코의 DRW Trading에서 근무하며, 그의 블로그는 www.shaneharvie.com이다.

생년월일 -
출생지 -
출간도서 0종
판매수 0권

건국대학교 신소재공학과 학사 / 전문 번역가
프로그래프로그래밍과 새로운 웹 기술에 항상 관심을 갖고 공학 용어의 명확성에 대해 고민한다. 기술 문서, 매뉴얼, IT 관련 논문들을 주로 번역했으며 해외 기술 논문 한글화 작업에도 참여했다. 번역서로는 [CSS 비밀 매뉴얼](한빛미디어, 2007), [시스템 관리자를 위한 시간관리 전략](한빛미디어, 2007), [Programming Flex 3](ITC, 2009) 등이 있다.

컴퓨터/인터넷 분야에서 많은 회원이 구매한 책

    리뷰

    0.0 (총 0건)

    구매 후 리뷰 작성 시, 북피니언 지수 최대 600점

    리뷰쓰기

    기대평

    작성시 유의사항

    평점
    0/200자
    등록하기

    기대평

    0.0

    교환/환불

    교환/환불 방법

    ‘마이페이지 > 취소/반품/교환/환불’ 에서 신청함, 1:1 문의 게시판 또는 고객센터(1577-2555) 이용 가능

    교환/환불 가능 기간

    고객변심은 출고완료 다음날부터 14일 까지만 교환/환불이 가능함

    교환/환불 비용

    고객변심 또는 구매착오의 경우에만 2,500원 택배비를 고객님이 부담함

    교환/환불 불가사유

    반품접수 없이 반송하거나, 우편으로 보낼 경우 상품 확인이 어려워 환불이 불가할 수 있음
    배송된 상품의 분실, 상품포장이 훼손된 경우, 비닐랩핑된 상품의 비닐 개봉시 교환/반품이 불가능함

    소비자 피해보상

    소비자 피해보상의 분쟁처리 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 따라 비해 보상 받을 수 있음
    교환/반품/보증조건 및 품질보증 기준은 소비자기본법에 따른 소비자 분쟁 해결 기준에 따라 피해를 보상 받을 수 있음

    기타

    도매상 및 제작사 사정에 따라 품절/절판 등의 사유로 주문이 취소될 수 있음(이 경우 인터파크도서에서 고객님께 별도로 연락하여 고지함)

    배송안내

    • 인터파크 도서 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다

    • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

    • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능하여, 인터파크 외 타업체 배송상품인 경우 발송되지 않을 수 있습니다.

    • 배송비

    도서(중고도서 포함) 구매

    2,000원 (1만원이상 구매 시 무료배송)

    음반/DVD/잡지/만화 구매

    2,000원 (2만원이상 구매 시 무료배송)

    도서와 음반/DVD/잡지/만화/
    중고직배송상품을 함께 구매

    2,000원 (1만원이상 구매 시 무료배송)

    업체직접배송상품 구매

    업체별 상이한 배송비 적용