본문내용 바로가기
MD의선택 무료배송 이벤트 소득공제

리팩토링: 코드 품질을 개선하는 객체지향 사고법

마틴 파울러 지음 | 김지원 옮김 | 한빛미디어 | 2012년 11월 09일 출간
클로버 리뷰쓰기

이 책의 다른 상품 정보

  • 정가 : 30,000원
    판매가 : 27,000 [10%↓ 3,000원 할인]
  • 통합포인트 :
    [기본적립] 1,500원 적립 [5% 적립] [추가적립] 5만원 이상 구매 시 2천원 추가적립 안내 [회원혜택] 실버등급 이상, 3만원 이상 구매 시 2~4% 추가적립 안내
  • 추가혜택 : 포인트 안내 도서소득공제 안내 추가혜택 더보기
  • 배송비 : 무료 배송비 안내
  • 개정정보 : 2020년 04월 출간된 개정판이 있습니다. 개정판 보기
  • 도서상태 : 절판

이 책의 이벤트 해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.

  • 개발자로 입문하기: 일단 이것부터 읽어보자!
    2019.05.31 ~ 2020.12.31
  • 개발자의 오랜친구, 한빛미디어의 책을 편리하게 모아보세요
    2017.11.22 ~ 2019.12.31
상품상세정보
ISBN 9788979149715(8979149719)
쪽수 500쪽
크기 188 * 257 * 30 mm /890g 판형알림
원서명/저자명 Refactoring : improving the design of existing code/Fowler, Martin

책소개

이 책이 속한 분야

객체지향 사고법을 정리한 이론서!

프로그램의 가치를 높이는 코드 정리 기술『리팩토링: 코드 품질을 개선하는 객체지향 사고법』. 리팩토링은 코드의 동작이나 의도는 유지하면서 코드의 구조, 재사용성, 가독성을 개선해 코드의 악취를 제거하고 전체 디자인을 개선하는 방법이다. 이 책은 72가지 리팩토링 기법을 통해 코드를 점진적으로 개선하는 방법을 소개한다. 특히 전문가 집단의 축적된 노하우를 바탕으로 리팩토링을 언제 어디에 어떻게 적용하면 되는지 상세히 설명하였다. 아울러 부록으로 설계적 문제점이 의심 가는 상황에 관한 대응 기법 표를 제시하여 적절한 기법을 쉽게 찾아 적용할 수 있도록 안내하였다.

저자소개

저자 : 마틴 파울러

저자가 속한 분야

저자 마틴 파울러는 소프트웨어 개발 분야의 저자 겸 국제 강사이며 전문 분야는 객체지향 분석과 설계, UML, 패턴, 익스트림 프로그래밍을 비롯한 애자일 소프트웨어 개발 방법론 등이다. 소프트웨어 개발 관련 책을 6권 집필했고, 현재 블로그와 위키의 혼합 형태인 블리키 bliki를 운영 중이며, 제어 흐름 반전 (Inversion of Control)을 통해 종속성 첨가(Dependency Injection) 용어를 대중화시켰다.

역자 : 김지원

역자 김지원은 웹 기술 및 다양한 분야에 두루 관심을 가지며 늘 용어 선정에 고심한다. 기술 문서, 매뉴얼, IT 관련 논문을 번역한 바 있고 해외 논문 DB 작업에도 참여했다. 『Programming Flex 3』 (ITC, 2009), 『한 권으로 끝내는 정규표현식』 (한빛미디어, 2010), 『웹 표준 가이드: HTML5+CSS3』 (한빛미디어, 2010), 『한 번에 배우는 HTML5+자바스크립트』 (한빛미디어, 2011), 『리팩토링: 루비 에디션』 (제이펍, 2011), 『웹 표준으로 만드는 안드로이드 웹앱, 개정판』 (한빛미디어, 2011), 『게이미피케이션』 (한빛미디어, 2012) 등을 번역했다.

목차

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

CHAPTER 02 리팩토링 개론
리팩토링은 무엇인가
리팩토링은 왜 해야 하나
리팩토링은 어떨 때 필요한가
팀장에게 어떻게 말을 꺼내나
리팩토링 관련 문제들
리팩토링과 설계
리팩토링과 성능
리팩토링의 유래

CHAPTER 03 코드의 구린내
중복 코드 Duplicated Code
장황한 메서드 Long Method
방대한 클래스 Large Class
과다한 매개변수 Long Parameter List
수정의 산발 Divergent Change
기능의 산재 Shotgun Surgery
잘못된 소속 Feature Envy
데이터 뭉치 Data Clumps
강박적 기본 타입 사용 Primitive Obsession
switch 문 Switch 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

CHAPTER 04 테스트 작성
JUnit 테스트 프레임워크
테스트 추가

CHAPTER 05 리팩토링 기법 카탈로그에 대해
참조 검색
리팩토링 기법의 성숙도

CHAPTER 06 메서드 정리
메서드 추출 Extract Method
메서드 내용 직접 삽입 Inline Method
임시변수 내용 직접 삽입 Inline Temp
임시변수를 메서드 호출로 전환 Replace Temp with Query
직관적 임시변수 사용 Introduce Explaining Variable
임시변수 분리 Split Temporary Variable
매개변수로의 값 대입 제거 Remove Assignments to Parameters
메서드를 메서드 객체로 전환 Replace Method with Method Object
알고리즘 전환 Substitute Algorithm

CHAPTER 07 객체 간의 기능 이동
메서드 이동 Move Method
필드 이동 Move Field
클래스 추출 Extract Class
클래스 내용 직접 삽입 Inline Class
대리 객체 은폐 Hide Delegate
과잉 중개 메서드 제거 Remove Middle Man
외래 클래스에 메서드 추가 Introduce Foreign Method
국소적 상속확장 클래스 사용 Introduce Local Extension

CHAPTER 08 데이터 체계화
필드 자체 캡슐화 Self Encapsulate Field
데이터 값을 객체로 전환 Replace Data Value with Object
값을 참조로 전환 Change Value to Reference
참조를 값으로 전환 Change Reference to Value
배열을 객체로 전환 Replace Array with Object
관측 데이터 복제 Duplicate Observed Data
클래스의 단방향 연결을 양방향으로 전환 Change Unidirectional Association to Bidirectional
클래스의 양방향 연결을 단방향으로 전환 Change Bidirectional Association to Unidirectional
마법 숫자를 기호 상수로 전환 Replace Magic Number with Symbolic Constant
필드 캡슐화 Encapsulate Field
컬렉션 캡슐화 Encapsulate Collection
레코드를 데이터 클래스로 전환 Replace Record with Data Class
분류 부호를 클래스로 전환 Replace Type Code with Class
분류 부호를 하위클래스로 전환 Replace Type Code with Subclasses
분류 부호를 상태/전략 패턴으로 전환 Replace Type Code with State/Strategy
하위클래스를 필드로 전환 Replace Subclass with Fields

CHAPTER 09 조건문 간결화
조건문 쪼개기 Decompose 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
하향 타입 변환을 캡슐화 Encapsulate Downcast
에러 부호를 예외 통지로 교체 Replace Error Code with Exception
예외 처리를 테스트로 교체 Replace Exception with Test

CHAPTER 11 일반화 처리
필드 상향 Pull Up Field
메서드 상향 Pull Up Method
생성자 내용 상향 Pull Up Constructor Body
메서드 하향 Push Down Method
필드 하향 Push Down Field
하위클래스 추출 Extract Subclass
상위클래스 추출 Extract Superclass
인터페이스 추출 Extract Interface
계층 병합 Collapse Hierarchy
템플릿 메서드 형성 Form Template Method
상속을 위임으로 전환 Replace Inheritance with Delegation
위임을 상속으로 전환 Replace Delegation with Inheritance

CHAPTER 12 복합 리팩토링
상속 구조 정리 Tease Apart Inheritance
절차 코드를 객체로 전환 Convert Procedural Design to Objects
도메인 로직을 표현과 분리 Separate Domain from Presentation
계층구조 추출 Extract Hierarchy

CHAPTER 13 리팩토링, 재사용, 현실성
개발자가 리팩토링을 꺼리는 이유
현실성 다시 검토하기
리팩토링 자료와 참고문헌
소프트웨어 재사용과 기술 변경이 미치는 영향
끝 인사
참고문헌

CHAPTER 14 리팩토링 도구
도구를 이용한 리팩토링
리팩토링 도구의 기술적 요건
리팩토링 도구의 실무적 요건
맺음말

출판사 서평

이 책이 제시하는 핵심 내용
코드 품질을 개선하는 객체지향 사고법을 정리한 참고서

어떤 독자를 위한 책인가?
좋은 코드를 작성하고, 코드의 품질을 개선하고 싶은 1-2년차 개발자
자바로 객체지향 프로그래밍을 제대로 하고 싶은 개발자

객체지향은 제대로 잘 해야 한다!

·당신은 객체지향 프로그래머인가?
프로그램이 돌아가기면 하면 객체지향인가? 객체지향이라는 도구를 제대로 활용하지 못하고 마구잡이로 작성한 코드에는 악취가 진동한다. 리팩토링은 코드의 동작이나 의도는 유지하면서 코드의 구조, 재사용성, 가독성을 개선... 더보기

Klover 리뷰 (0)

북로그 리뷰 (2) 전체보기 쓰러가기

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

포인트는 작성 후 다음 날 적립되며, 도서 발송 전 작성 시에는 발송 후 익일에 적립됩니다.
북로그 리뷰는 본인인증을 거친 회원만 작성 가능합니다.
(※ 외서/eBook/음반/DVD/GIFT 및 잡지 상품 제외) 안내
  • 리팩토링 oo**502 | 2013-03-03 | 추천: 0 | 5점 만점에 5점
    프로그램의 가치를 높이는 기술. 프로그래밍을 공부하면서 처음에는 기본적인 부분을 공부하고 알고리즘과 데이터베이스 등을 공부하고 컴퓨터 관련 과목들과 흐름들을 보게 된다. 프로그래밍 공부를 하면서 프로젝트도 정해서 하게되고 필요한게 무엇인지 생각 한 후에 필요한 부분을 코딩하기 시작한다. 프로그래밍을 막 시작한 사람들은 학생들이 주를 이룬다. 학생들은 처음 프로젝트 주제를 정하면 사용자는 생각 못해보고 일단 할수 있는데까지만 시도하게 된다.   그때 맨토가 있으면 맨토에게 도움을 요청하거나 독학 또는 학원을 통해서 ... 더보기
  • 나는 일종의 세미 결벽증 같은 것이 있다. 사실 어찌보면 상식적으로 당연하긴 하지만 세균이 매우 많다고 밝혀진 키보드, 마우스 등을 자주 닦거나 손을 자주 씻는다.돈을 가지런히 모두 앞을 보고 지갑에 넣고 만원/5천원,1천원 짜리로 구분해서 지갑에 분리한다. (돈에도 굉장히 세균이 많고, 영수증에는 폴리페놀A라는 환경호르몬이 있어서 만지기를 꺼려한다.-ㅅ-) 또, 책을 정리할 때는 분야별로 책꽂이에 꽂는다. 시리즈면 시리즈별로 왼쪽부터 순서대로 놓아야 한다. 또한 책 크기도 어느 정도 고려하여 계단식 모양이 되도록 작은 책... 더보기

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

교환/반품/품절안내

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

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

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

이 책의 원서

안내

바로가기

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

최근 본 상품