간편결제, 신용카드 청구할인
카카오페이 3,000원
(카카오페이 결제 시 최대할인 3천원 / 5만원 이상 결제, 기간 중 1회)
PAYCO(페이코) 최대 5,000원 할인
(페이코 신규 회원 및 90일 휴면 회원 한정)
북피니언 롯데카드 30% (18,900원)
(최대할인 3만원 / 3만원 이상 결제)
EBS 롯데카드 20% (21,600원)
(최대할인 3만원 / 3만원 이상 결제)
인터파크 NEW 우리V카드 10% (24,300원)
(최대할인 3만원 / 3만원 이상 결제)
인터파크 현대카드 7% (25,110원)
(최대할인 3만원 / 3만원 이상 결제)
Close

리팩토링 - 코드 품질을 개선하는 객체지향 사고법 : 프로그램의 가치를 높이는 코드 정리 기술

원제 : Refactoring
소득공제

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

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

30,000원

  • 27,000 (10%할인)

    1,500P (5%적립)

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

    • 연관도서

    • 사은품(2)

    책소개

    프로그램이 돌아가기면 하면 객체지향인가? 객체지향이라는 도구를 제대로 활용하지 못하고 마구잡이로 작성한 코드에는 악취가 진동한다. 리팩토링은 코드의 동작이나 의도는 유지하면서 코드의 구조, 재사용성, 가독성을 개선해 코드의 악취를 제거하고 전체 디자인을 개선하는 방법이다.
    독자는 72가지 리팩토링 기법을 통해 코드를 점진적으로 개선하는 방법을 학습할 수 있으며, 이 책을 마쳤을 때는 객체지향 프로그래밍 능력이 한 단계 향상될 것이다.

    출판사 서평

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

    당신은 객체지향 프로그래머인가?


    코딩 스타일이 바뀐다
    객체지향 언어의 문법을 익혔다고 저절로 객체지향 프로그래밍을 할 수 있는 게 아니다. 리팩토링 카탈로그를 통해 어떤 코드를 고쳐야 하는지, 왜 고쳐야 하는지, 고친 코드가 왜 좋은지 이해할 수 있다. 이런 과정을 통해 객체지향에 어울리는 코드 디자인을 배우게 되고, 자신의 코딩 스타일도 바뀌게 된다. 이 책을 읽기 전과 후는 코드의 품질에 결정적인 차이를 가져오게 된다.

    목차

    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 리팩토링 도구
    __도구를 이용한 리팩토링
    __리팩토링 도구의 기술적 요건
    __리팩토링 도구의 실무적 요건
    __맺음말

    본문중에서

    프로그래밍할 때는 미리 구상 단계를 거치므로 설계는 목표만큼은 아니더라도 최소한의 완성도를 갖추리라 기대한다. 처음부터 완벽에 가까운 프로그램이 만들어진다면 얼마나 좋을까? 물론 경력이 많은 전문가가 시장 조사에서부터 요구사항과 문제 분석을 철저히 거쳐 소프트웨어 기획과 설계 단계에 이르는 심사숙고의 산물로 어느 정도 완성도 높은 프로그램을 제작할 수 있을지는 모른다. 하지만 최초에 탄탄한 설계를 갖추어도 어차피 시간이 흐르면 각종 요구사항의 증가와 변화로 프로그램에 기능을 추가하거나 수정하기 마련이고, 그렇게 버전 업이 이뤄졌을 때 겉으론 아무 문제가 보이지 않고 원활히 실행되는 것처럼 보여도 기저의 설계는 초기 의도와 달리 변형되고 왜곡되어 간다. 이러한 과정이 누적되어서 코드가 복잡해지면 작성자조차도 알아보기 힘들게 되어 유지보수가 어려워지고, 급기야 수정 보완할 때 치명적인 실수를 할 수도 있다. 처음엔 모든 제품이 새것이지만 시간에 따라 노후되듯이 소프트웨어도 지속적인 구조의 개선 없이는 차츰 노후되고 거기에 반영된 원래 목적도 퇴색한다. 그래서 탄탄한 설계부터 갖추는 것보다는 포괄적으로 소프트웨어를 완성하고 나서 의혹이 드는 점이 생기면 그때마다 지속적으로 설계를 보완하고 수정해 나가는 방식이 오히려 시간이 흐를수록 소프트웨어를 더욱 탄탄하고 안정화할 수 있다. 이런 지속적 보완을 점증적이고 체계적으로 해나갈 수 있는 도구가 바로 리팩토링이다. 리팩토링은 수년간의 경험을 통해 발견한 구체적인 소프트웨어 개선 방법들의 공통 해결책을 발견해 일반화한 추상 개념이다. 리팩토링은 기존의 소스코드를 가독성 readability, 재활용 reusability, 체계적 구조 well-structured 측면에서 개선하는 총괄 작업을 뜻한다. 설계를 좋아지게 고치면 구조가 체계적이 된다. 구조가 좋아지면 가독성과 재활용성은 저절로 얻는다.
    이 책은 전문가 집단의 축적된 노하우를 바탕으로 리팩토링을 언제 어디에 어떻게 적용하면 되는지 상세히 알려준다. 흔히 발견되는 구린내(설계적 문제점이 의심 가는 상황)만 확실히 알아두면, 모든 기법을 외울 필요 없이 각 미심쩍은 상황마다 부록에 수록한 구린내에 따른 대응 기법 표를 참고해서 적절한 기법을 쉽게 찾아 적용할 수 있어서 현장 활용도가 높다. 예술 작품도 한 번에 완성되지 않는다. 어느 것이든 전체적 구상을 실체화한 후 각 부분을 보완하고 다듬고 덧입혀서 만들어지듯이, 소프트웨어도 적절하고 꾸준한 구조 수정과 보완이 필요하다.
    부족한 저에게 이 책의 번역을 믿고 맡겨주신 송성근 팀장님과 한동훈 대리님께 감사하고, 항상 번역에만 집중할 수 있게 물심양면 뒷받침해주시는 한빛미디어 모든 분께 늘 감사 인사를 전한다. 이번 겨울을 보내며 제 자신도 한 층 더 발전하는 시간이 되기를 바란다.
    (/ 옮긴이 서문 중에서)

    저자소개

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

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

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

    웹 기술 및 다양한 분야에 두루 관심을 가지며 늘 용어 선정에 고심합니다. 기술 문서, 매뉴얼, IT 관련 논문을 번역한 바 있고 해외 논문 DB 작업에도 참여했습니다. 역서로는 [CSS 비밀 매뉴얼](2007), [시스템 관리자를 위한 시간관리 전략](2007), [Flex 3 Cookbook](2010), [한 권으로 끝내는 정규표현식](2010), [웹 표준 가이드: HTML5+CSS3](2010), [한 번에 배우는 HTML5+자바스크립트](2010, 이상 한빛미디어) 등이 있습니다.

    이 책과 내용이 비슷한 책 ? 내용 유사도란? 이 도서가 가진 내용을 분석하여 기준 도서와 얼마나 많이 유사한 콘텐츠를 많이 가지고 있는가에 대한 비율입니다.

      리뷰

      9.3 (총 0건)

      기대평

      작성시 유의사항

      평점
      0/200자
      등록하기

      기대평

      9.2

      교환/환불

      교환/환불 방법

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

      교환/환불 가능 기간

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

      교환/환불 비용

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

      교환/환불 불가사유

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

      소비자 피해보상

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

      기타

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

      배송안내

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

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

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

      • 배송비

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

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

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

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

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

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

      업체직접배송상품 구매

      업체별 상이한 배송비 적용