출고예상일 안내
주문하신 상품이 한국에서 현지 배송을 위한 출고단계가 이루어질 것으로 예상되는 날짜입니다. 상품을 준비하는 과정에서 내부적인 사정으로 인해 출고예상일에 다소 오차가 생길 수 있습니다.
여러 상품(예약상품포함)을 함께 주문하신 경우 출고예상일이 가장 늦은 날짜에 맞춰 함께 배송됩니다.

- 정가
- $52.00
- 판매가
-
$28.60
(45%↓)
- 적립금
- $0.57 (2%P)
품절된 상품입니다.
이 책을 꼭 원하시는 고객님께서는 아래 "상품문의"를 클릭 후 구매의사를
알려주세요. 책이 확보 될 경우 연락 드리겠습니다.
평점 - · 리뷰 0
ISBN : 9788994506067 / 486쪽 188 x 245 (㎜)
이 상품에 궁금하신점이 있으세요? 1:1상담문의

-
권석만
-
구오제드, 송이핑, 조신
-
천근아, 박정훈, 장지흠, 진재연, 이정한, 민윤기
-
조성호
- 26,100
- 26,100
- 22,500
- 29,700
출판사 리뷰
출판사 서평 초 베스트셀러 『리팩토링』의 루비 완결판! 리팩토링 원판 독자도 다시 읽어봐야 할 책! 루비와 자바 프로그래머뿐만이 아닌 모든 개발자들이 소유해야 할 책! 리팩토링을 통해 프로그래머는 엉망진?창인 소프트웨어를 기능 개선과 유지보수가 쉬운 깔끔한 설계의 시스템으로 바꿀 수 있다. 이 책은 마틴 파울러의 기존 리팩토링 원판 교재를 바탕으로 루비 예제와 적용 방법을 수록하였으며, 또한 수많은 수정과 보완을 거쳐 루비 사용자뿐만이 아닌 리팩토링에 관심 있는 모든 개발자들에게 유익한 교재로 출간되었다. 필자들은 검증된 70개 ... 초 베스트셀러 『리팩토링』의 루비 완결판! 리팩토링 원판 독자도 다시 읽어봐야 할 책! 루비와 자바 프로그래머뿐만이 아닌 모든 개발자들이 소유해야 할 책! 리팩토링을 통해 프로그래머는 엉망진창인 소프트웨어를 기능 개선과 유지보수가 쉬운 깔끔한 설계의 시스템으로 바꿀 수 있다. 이 책은 마틴 파울러의 기존 리팩토링 원판 교재를 바탕으로 루비 예제와 적용 방법을 수록하였으며, 또한 수많은 수정과 보완을 거쳐 루비 사용자뿐만이 아닌 리팩토링에 관심 있는 모든 개발자들에게 유익한 교재로 출간되었다. 필자들은 검증된 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
































