메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

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

한빛미디어

번역서

절판

  • 저자 : 마틴 파울러
  • 번역 : 김지원
  • 출간 : 2012-11-09
  • 페이지 : 500 쪽
  • ISBN : 9788979149715
  • 물류코드 :1971
  • 개정판정보 :개정판이 새로 출간되었습니다. 개정판 보기
  • 초급 초중급 중급 중고급 고급
4점 (2명)
좋아요 : 61
객체지향은 제대로 잘 해야 한다!

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

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

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

마틴 파울러

ThoughtWorks 수석 과학자. 엔터프라이즈 소프트웨어 설계에 주력한다. 특히 좋은 설계와 설계 개선에 관심이 많다. 소프트웨어 개발 관련 다수의 책을 집필했고, 제어 역전(Inversion of Control)과 의존성 주입(Dependency Injection) 용어를 대중화시킨 장본인이다.
김지원 역자

김지원

여가 시간에는 플래시 아이템 제작, 컴퓨터 음악 작곡 등을 하며, 때로는 구성이 잘 된 웹디자이너들의 사이트를 탐색하면서 아이디어를 구상하기도 한다. 뜨거운 감자인 웹 표준에 관해서도 큰 관심을 갖고 있으며, 이와 관련해서 유용한 보충 자료를 수집해 블로그를 통해 제공할 예정이다. 최근 우리말 번역에 있어서 기술 용어의 일관성에 대해 고민하고 있다. 건국대학교 신소재공학과를 졸업한 후, 기술문서, 매뉴얼 등을 위주로 번역해왔으며 유비쿼터스 IT 관련 논문들의 번역 작업에 참여했다. 2004년부터 현재까지 정보기술, 건축, 화학, 디자인, 사운드 등의 분야에서 프리랜서 번역가로 활동 중이다.

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 리팩토링 도구

  도구를 이용한 리팩토링 

  리팩토링 도구의 기술적 요건 

  리팩토링 도구의 실무적 요건 

  맺음말 

예전 10년쯤 전에 리팩토링 책을 보았었다.
그땐 리팩토링이나 디자인패턴에 많이 관심이 있던터라
이렇게 저렇게 많이 프로그램을 바꿔보았던 기억이 난다.

예전 리팩토링 책의 내용은
리팩토링의 카테고리들에 대해서 쭈욱 소제목으로 해서
설명이 있었다면

이 책은
그러한 카테고리 전
리팩토링이 어떤것인지 간단한 예제로 한번 돌려보는 과정을 보여주는
챕터가 하나 있고
리택토링이 무엇인지 설명하는 부분이 있다.
그리고 각각의 리택토링 에 대한 카테고리별 설명부가 있다.

그러다보니
내용이 조금 중복적인 부분이 좀 있어 아쉬웠다.

소스의 구조 변경이 이전과 이후에 대한 구별할 수 있는 표시가 되어있다면
좀더 보기에 편하지 않았을까 하는 아쉬움이 있었다.


리팩토링에 관심이 있다면 읽어보면 좋은 책이다

처음 코드를 작성하게되면 가장 큰 문제가 주석처리를 하지 않으면 코드를 작성한 사람조차 어떻게 구성되어 있는지 알기가 어렵다는 것이다. 이번에 소개할 책은 이러한 문제를 해결하는데 많은 도움을 줄 수 있는 책이다. 바로 "리팩토링"이다. 리팩토링은 개발자를 위한 책 답게 심플하고 간결하다. 읽기에도 어렵지 않게 단계별로 설명되어 있던 점 이 좋았다.

이 책은 코드를 정리하는 법만을 알려주고 있지 않다. 어떻게 하면 한눈에 이해하기 쉽고 최대한 간결하게 코드를 작성하는 방법을 알려주고 있다. 기존의 프로그래밍 서적의 경우 앞에 원리에 관한 이야기를 주저리주저리 이야기하고 있다면 이 책은 필요한 만큼만 소개하고 있어서 이해하는것이 쉬웠다. 이 책을 보고 실습을 해보았는데, 단순히 따라만 하기 보다는 원리에 대한 설명과 방법론적인 이야기를 많이 하고 있어서 많은 도움이 되었다. 그리고 코드를 보는 시각이 많이 바뀌게 되었던것 같다. 복잡한 코드 사이에서 어떻게 하면 보다 간결하게 작성할 수 있을 지를 고민하게 되었고 다른 사람들이 작성한 코드를 살펴보는 기회도 가지게 되었다.


아직 자신이 작성한 코드에 자신이 없거나 천줄이 넘는 코드를 작성하고 있는 개발자라면 이 책을 꼭 한번 읽어보기를 추천한다. 비 개발자의 경우 이 책을 읽기에는 많은 어려움을 겪을 것이다. ( 이 부분에 있어서 가장 아쉬움이 남는다. 비 개발자도 쉽게 보고 이해할 수 있고 코드를 작성할 수 있도록 안내하는 다음 책이 나오길 기대해본다.)

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
리팩토링: 코드 품질을 개선하는 객체지향 사고법
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
리팩토링: 코드 품질을 개선하는 객체지향 사고법
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
리팩토링: 코드 품질을 개선하는 객체지향 사고법
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실