logo
logo
x
바코드검색
BOOKPRICE.co.kr
책, 도서 가격비교 사이트
바코드검색

인기 검색어

실시간 검색어

검색가능 서점

도서목록 제공

리팩토링 : 루비 에디션

리팩토링 : 루비 에디션

(버그 없이 프로그램을 개선시키는 최고의 방법!)

마틴 파울러, 켄트 벡, 제이 필즈, 셰인 하비 (지은이), 김지원 (옮긴이)
제이펍
26,000원

일반도서

검색중
서점 할인가 할인률 배송비 혜택/추가 실질최저가 구매하기
알라딘 로딩중
yes24 로딩중
교보문고 로딩중
11st 로딩중
영풍문고 로딩중
쿠팡 로딩중
쿠팡로켓 로딩중
G마켓 로딩중
notice_icon 검색 결과 내에 다른 책이 포함되어 있을 수 있습니다.

중고도서

검색중
서점 유형 등록개수 최저가 구매하기
로딩중

eBook

검색중
서점 정가 할인가 마일리지 실질최저가 구매하기
로딩중

책 이미지

리팩토링 : 루비 에디션
eBook 미리보기

책 정보

· 제목 : 리팩토링 : 루비 에디션 (버그 없이 프로그램을 개선시키는 최고의 방법!)
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 객체지향 프로그래밍/UML
· ISBN : 9788994506067
· 쪽수 : 508쪽
· 출판일 : 2011-09-30

책 소개

마틴 파울러의 기존 리팩토링 원판 교재를 바탕으로 루비 예제와 적용 방법을 수록하였으며, 또한 수많은 수정과 보완을 거쳐 루비 사용자뿐만이 아닌 리팩토링에 관심 있는 모든 개발자들에게 유익한 교재. 필자들은 검증된 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 퍼즐 조립

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

저자소개

마틴 파울러 (지은이)    정보 더보기
ThoughtWorks의 수석 과학자로 소프트웨어 시스템 디자인 개선과 개발자 생산성 향상에 주력하고 있다. 마틴 파울러는 지난 십여 년 이상 까다로운 비즈니스 문제에 객체를 적용해 해결하는 방법을 전문적으로 연구한 독립 컨설턴트다. 특히 보건, 금융거래, 기업재정 등 다양한 분야의 시스템에 대한 컨설팅을 수행했으며 주요 고객사로는 크라이슬러, 시티뱅크, 영국 국립보건원, 앤더슨 컨설팅, 넷스케이프 커뮤니케이션 등이 있다. 또한 파울러는 다양한 행사에서 객체, UML(Unified Modeling Language), 패턴 등의 주제에 대한 강연자로 꾸준히 활동하고 있다. 지은 책으로는 『DSL: 고객과 함께하는 도메인 특화 언어』, 『리팩토링: 코드 품질을 개선하는 객체지향 사고법』 등이 있다.
펼치기
켄트 벡 (지은이)    정보 더보기
패턴(Pattern), 테스트 주도 개발(Test Driven Development), 익스트림 프로그래밍(Extreme Programming) 같은 아이디어들을 주장하면서 지속적으로 소프트웨어 공학의 교조에 도전하고 있다. 현재 Three Rivers Institute와 Agitar Software에 관련을 맺고 있으며, 『Extreme Programming Explained』, 『Implementation Patterns』, 『Contributing to Eclipse』, 『Planning Extreme Programming』 등 많은 책의 저자이기도 하다.
펼치기
제이 필즈 (지은이)    정보 더보기
DRW Trading의 소프트웨어 개발자이며, 여러 컨퍼런스에서 강연자로 자주 나간다. 제이는 혁신적인 솔루션을 발견하고 발전시키는 일에 열정을 갖고 있다. 그의 홈페이지는 www.jayfields.com이다.
펼치기
셰인 하비 (지은이)    정보 더보기
미국, 인도, 호주에서 애자일 환경의 소프트웨어를 개발해왔다. 셰인은 시카코의 DRW Trading에서 근무하며, 그의 블로그는 www.shaneharvie.com이다.
펼치기
김지원 (옮긴이)    정보 더보기
웹 기술뿐 아니라 온갖 분야에 발을 뻗고 싶어하는 바람기를 지녔지만 역부족이다. 배워야 할 것이 갈수록 늘어나 시간의 결핍을 느낀다. 기술 문서, 매뉴얼, 유비쿼터스 관련 논문을 번역한 바 있고 해외 논문 DB 구축에 필요한 관련 작업에도 참여했다. 『한 권으로 끝내는 정규표현식』(한빛미디어, 2010), 『웹 표준 가이드: HTML5+CSS3』(한빛미디어, 2010), 『프로젝트로 배우는 HTML5+자바스크립트』(한빛미디어, 2012), 『리팩토링』(한빛미디어, 2012), 『엘리멘틀 디자인 패턴』(한빛미디어, 2013) 등을 번역했다.
펼치기
이 포스팅은 쿠팡 파트너스 활동의 일환으로,
이에 따른 일정액의 수수료를 제공받습니다.
이 포스팅은 제휴마케팅이 포함된 광고로 커미션을 지급 받습니다.
도서 DB 제공 : 알라딘 서점(www.aladin.co.kr)
최근 본 책