본문내용 바로가기
무료배송 소득공제

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

마틴 파울러 , 켄트 벡 , 제이 필즈 , 셰인 하비 지음 | 김지원 옮김 | 제이펍 | 2011년 09월 30일 출간

이 책의 다른 상품 정보

  • 정가 : 26,000원
    판매가 : 23,400 [10%↓ 2,600원 할인]
  • 통합포인트 :
    [기본적립] 1,300원 적립 [5% 적립] [추가적립] 5만원 이상 구매 시 2천원 추가적립 안내 [회원혜택] 실버등급 이상, 3만원 이상 구매 시 2~4% 추가적립 안내
  • 추가혜택 : 포인트 안내 도서소득공제 안내 추가혜택 더보기
  • 배송비 : 무료 배송비 안내
  • 도서상태 : 절판
상품상세정보
ISBN 9788994506067(8994506063)
쪽수 486쪽
크기 188 * 245 * 35 mm /992g 판형알림
원서명/저자명 Refactoring: Ruby edition/Fowler, Martin

책소개

이 책이 속한 분야

『리팩토링: 루비 에디션』은 마틴 파울러의 기존 리팩토링 원판 교재를 바탕으로 루비 예제와 적용 방법을 수록한 책이다. 많은 수정과 보완을 거쳐 루비 사용자뿐만이 아닌 리팩토링에 관심 있는 모든 개발자들에게 유익한 교재로 구성하였다. 검증된 70개 이상의 리팩토링 기법을 단계적인 실시 방법, 원리를 보여주는 예제 코드와 함께 자세히 설명하고 있다.

목차

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

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

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

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

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

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

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

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

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

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

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

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

CHAPTER 13 퍼즐 조립 463

참고 문헌 469
리팩토링 기법 찾아보기 471
미심쩍은 상황별 기법 475

출판사 서평

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

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

필자들은 검증된 70개 ... 더보기

Klover 리뷰 (0)

북로그 리뷰 (0) 쓰러가기

도서 구매 후 리뷰를 작성하시면
결제 90일 이내 300원, 발송 후 5일 이내 400원, 이 상품의 첫 리뷰 500원의 포인트를 드립니다.

포인트는 작성 후 다음 날 적립되며, 도서 발송 전 작성 시에는 발송 후 익일에 적립됩니다.
북로그 리뷰는 본인인증을 거친 회원만 작성 가능합니다.
(※ 외서/eBook/음반/DVD/GIFT 및 잡지 상품 제외) 안내
  • 해당도서의 리뷰가 없습니다.

문장수집 (0) 문장수집 쓰기 나의 독서기록 보기
※구매도서의 문장수집을 기록하면 통합포인트 적립 안내

스토리K 1건의 스토리K가 있습니다.

    교환/반품/품절안내

    ※ 상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)

    교환/반품/품절안내
    반품/교환방법 마이룸 > 주문관리 > 주문/배송내역 > 주문조회 > 반품/교환신청 ,
    [1:1상담>반품/교환/환불] 또는 고객센터 (1544-1900)

    ※ 오픈마켓, 해외배송주문, 기프트 주문시 [1:1상담>반품/교환/환불]
        또는 고객센터 (1544-1900)
    반품/교환가능 기간 변심반품의 경우 수령 후 7일 이내,
    상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
    반품/교환비용 변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
    반품/교환 불가 사유
    • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
      (단지 확인을 위한 포장 훼손은 제외)
    • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
      예) 화장품, 식품, 가전제품(악세서리 포함) 등
    • 복제가 가능한 상품 등의 포장을 훼손한 경우
      예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
    • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우 ((1)해외주문도서)
    • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
    • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
    • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에
      해당되는 경우
    (1) 해외주문도서 : 이용자의 요청에 의한 개인주문상품으로 단순변심 및 착오로 인한 취소/교환/반품 시 ‘해외주문 반품/취소 수수료’ 고객 부담 (해외주문 반품/취소 수수료 : ①서양도서-판매정가의 12%, ②일본도서-판매정가의 7%를 적용)
    상품 품절 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는
    이메일과 문자로 안내드리겠습니다.
    소비자 피해보상
    환불지연에 따른 배상
    • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은
      소비자분쟁해결 기준 (공정거래위원회 고시)에 준하여 처리됨
    • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의
      소비자 보호에 관한 법률에 따라 처리함

    바로가기

    • 우측 확장형 배너 2
    • 우측 확장형 배너 2

    최근 본 상품