알라딘 중고매장

  • 최저가 : -원 I 최고가 : -원
  • 재고 : 0부
  • - 쇼핑목록에 추가하신 후 목록을 출력하시면 매장에서 간편하게 상품을 찾을 수 있습니다.
 
[종로점] 서가 단면도
(0)

전통적인 소프트웨어 개발 단계는 분석-설계-구현-테스트로 이어진다. 개발 후반부의 변경사항을 최소화하기 위해서는 정확한 요구분석이 필요하고, 변경에 적절히 대처하기 위해서는 소프트웨어를 유연하게 설계하는 것이 중요하다.

그러나 모든 것을 미리 알 수는 없는 노릇이다. 아무리 정확하게 분석한다 하더라도 변경사항은 계속 발생하기 마련이다. 코드를 수정함에 따라 시스템의 본래 모습과 디자인된 구조는 점점 사라질 것이다. 또한 소프트웨어의 디자인을 유연하게 하는 것은 비용을 증가하게 하고, 코드를 이해하기 어렵게 한다.

리팩토링은 소프트웨어의 외부 기능을 변경하지 않으면서 내부 구조를 바꾸는 기술이다. 리팩토링을 사용하면 나쁜 디자인의 코드를 취해서, 외부 기능을 변경하지 않고, 좋은 디자인의 코드로 바꿀 수 있다. 따라서 리팩토링을 이용하면 처음부터 미리 모든 경우에 대해 고민하고, 필요할지 확실하지도 않은 유연성을 소프트웨어에 주기 위해 비용을 낭비할 필요가 없다.

처음에는 간단한 경우에 대해 코드를 작성하고, 나중에 문제가 복잡해지면 리팩토링을 하면 된다. 리팩토링의 각 단계는 아주 적은 작업만을 포함하고 있고, 또 각 단계마다 테스트를 하기 때문에 안전하게 소프트웨어의 내부 구조를 바꿀 수 있다.

리팩토링을 사용하면 작업의 밸런스가 바뀐다. 모든 것을 미리 생각하기보다는 개발을 하면서 지속적으로 좋은 디자인을 찾는다. 시스템을 구축하면서 어떻게 디자인을 개선할지에 대해 배운다. 그 작업은 개발이 계속되어도 프로그램의 디자인이 계속 좋은 상태로 남아있게 한다.

1. 리팩토링, 첫번째 예제
2. 리팩토링의 원리
3. 코드에서의 나쁜 냄새
4. 테스트 만들기
5. 리팩토링의 카탈로그로
6. 메소드 정리
7. 객체간의 기능 이동
8. 데이터 구성
9. 조건문의 단순화
10. 메소드 호출의 단순화
11. 일반화 다루기
12. 대규모 리팩토링
13. 리팩토링, 재사용, 그리고 현실
14. 리팩토링 도구
15. 하나로 합치기

1장. 리팩토링
비디오 가게에서 요금과 포인트를 계산하여 인쇄하는 프로그램을 예제로 하여 리팩토링이 무엇인지 감을 잡을 수 있도록 설명하고 있다. 디자인도 별로 좋지 않고, 객체지향적이지도 않은 코드가 Extract Method, Move Method, Replace Temp with Query 등의 리팩토링을 하나씩 적용해가면서 어떻게 좋은 디자인으로 바꾸는지를 보여준다.

2장. 리팩토링의 원리
리팩토링의 정의와 리팩토링을 해야 하는 이유, 언제 리팩토링을 해야 하고, 언제 하지 말아야 하는지 등에 대해 설명한다. 또한 후반부에서는 리팩토링에 있어서의 문제점, 리팩토링과 디자인의 관계, 리팩토링과 퍼포먼스 튜닝, 리팩토링의 기원에 대해 설명한다.

3장. 코드에서의 나쁜 냄새
리팩토링을 어떻게 하는지 아는 것과 리팩토링을 언제 해야 할지를 아는 것은 별개의 문제다. 이 장에서는 리팩토링이 필요한 코드를 악취가 나는 코드로 비유하고, 어떤 경우에 코드에서 악취가 나는지, 또 그 악취를 제거하기 위해서는 어떤 리팩토링을 써야 하는지를 설명한다.

4장. 테스트 만들기
리팩토링에서 테스트는 필수조건 이다. 이 장에서는 리팩토링에서 테스트의 중요성을 설명하고, 오픈소스 테스트 프레임워크인 JUnit을 이용하여 단위 테스트를 하는 절차를 설명한다.

5장. 리팩토링 카탈로그로…
5장부터 12장까지는 이 책의 핵심 부분인 리팩토링 카탈로그이다. 5장에서는 리팩토링 카탈로그가 어떤 식으로 구성되어 있는지 살펴본다. 또한 리팩토링을 할 때 변경된 클래스나 메쏘드, 필드를 참조하는 코드를 어떻게 효과적으로 찾아 수정할 수 있는지에 대해 설명하고, 리팩토링 기술이 얼마나 성숙되었는지에 대해 논의한다.

6장. 메쏘드 구성
지나치게 긴 메쏘드는 많은 문제를 유발한다. 메쏘드를 그 의미가 명확한 이름을 지어 잘게 분해하면 코드는 이해하기가 쉬워지고 재사용성이 더 높아진다.이 장에서는 긴 메쏘드를 여러 개의 작은 메쏘드로 만들기 위해 코드를 추출하는 리팩토링, 코드를 추출할 때 문제가 되는 임시변수를 다루는 리팩토링 등이 설명되어 있다.

7장. 객체간의 기능 이동
객체지향 디자인에서 가장 중요한 부분 중의 하나가 객체간의 역할 분담을 잘 하는 것이다. 이 장에서는 객체간의 역할 분담을 제대로 하기 위해 객체간 필드나 메쏘드를 이동하고, 클래스를 추출하는 리팩토링이 설명되어 있다.

8장. 데이터 구성
객체지향 언어의 장점 중의 하나가 전통적인 절차적 언어에서 사용할 수 있는 간단한 데이터 타입 이상의 새로운 타입을 만들 수 있는 것이다. 이 장에서는 객체의 특성을 잘 이용하여 데이터를 쉽게 다룰 수 있도록 하는 리팩토링에 대해 논의한다.

9장. 조건문의 단순화
복잡한 조건문은 프로그램을 이해하기 어렵게 한다....

최근작 :<리팩터링 2판 (리팩토링 개정판)>,<엔터프라이즈 애플리케이션 아키텍처 패턴>,<NoSQL: 빅 데이터 세상으로 떠나는 간결한 안내서> … 총 42종 (모두보기)
소개 :
최근작 :<Java 세상을 덮친 Eclipse>,<Java 세상을 덮친 Eclipse>,<자바 세상을 덮치는 Eclipse> … 총 11종 (모두보기)
소개 :『Java 세상을 덮친 Eclipse』를 썼으며 『패턴을 활용한 리팩터링』, 『소프트웨어 공학의 사실과 오해』, 『NoSQL: 빅데이터 세상으로 떠나는 간결한 안내서』 등을 번역했다. 현재 사이냅소프트에서 웹오피스를 개발하고 있다.
최근작 :
소개 :