품목정보
발행일 | 2008년 10월 22일 |
---|---|
쪽수, 무게, 크기 | 515쪽 | 984g | 185*235*35mm |
ISBN13 | 9788989975922 |
ISBN10 | 8989975921 |
발행일 | 2008년 10월 22일 |
---|---|
쪽수, 무게, 크기 | 515쪽 | 984g | 185*235*35mm |
ISBN13 | 9788989975922 |
ISBN10 | 8989975921 |
1부. 워밍업: 코드 변경 원리를 이해하라 1장. 소프트웨어 변경 소프트웨어를 수정하는 네 가지 이유 위험한 변경 2장. 효과적인 피드백 활용 단위테스트란? 상위단계 테스트 테스트 덮개 레거시 코드 변경 알고리즘 3장. 감지와 분리 협력자 속이기 4장. 봉합 모델 엄청난 양의 테스트 봉합 봉합의 종류 5장. 레거시 코드를 위한 도구 자동화된 리팩토링 도구 모조 객체 단위테스트 하니스 일반적인 단위테스트 하니스 2부. 본격적인 소프트웨어 변경: 코드 이렇게 고치자! 6장. 고칠 건 많고 시간은 없고... 발아 메소드 발아 클래스 포장 메소드 포장 클래스 요약 7장. 코드 하나 바꾸는 데 왜 이리 오래 걸리지? 상황 이해 시차 의존관계 깨기 요약 8장. 특징, 어떻게 추가할까? 테스트 주도 개발 비교를 통한 프로그래밍 요약 9장. 뚝딱! 테스트 하니스에 클래스 제대로 넣기 성가신 매개변수의 경우 숨은 의존관계인 경우 생성 블랍인 경우 성가신 전역 의존관계인 경우 끔찍한 인클루드 의존관계인 경우 양파 매개변수인 경우 별칭 붙은 매개변수인 경우 10장. 테스트 하니스에서 실행할 수 없는 메소드 숨은 메소드인 경우 도움이 되는 언어 특징인 경우 탐지 불가능한 부작용인 경우 11장. 코드 변경 과정에서 꼭 테스트해야 할 메소드 효과에 대한 추론 전방 추론 효과 전파 효과 추론을 위한 도구 효과 분석을 통한 학습 효과 스케치 단순화 12장. 클래스 의존관계, 반드시 없애야 할까? 차단 지점 기법 조임 지점을 이용한 설계 판단 조임 지점 함정 13장. 변경에 필요한 테스트는 뭐가 있을까? 특성화 테스트 클래스 특성화 목표 테스트 특성화 테스트 작성을 위한 휴리스틱 14장. 우릴 미치게 하는 라이브러리 의존관계 15장. 응용프로그램이 모두 API 호출로 이뤄졌다면? 16장. 코드를 잘 고치기엔 내가 모르는 2% 노트/스케치 표식 나열 스크래치 리팩토링 미사용 코드 삭제 17장. 뼈대가 약한 내 응용프로그램 시스템 스토리 말하기 벌거숭이 CRC 대화 심사 18장. 발목 잡는 테스트 코드 클래스 명명 관행 테스트 위치 19장. 객체지향이 아니라서 위험하다고? 그럼 이렇게 고쳐 봐! 쉬운 경우 어려운 경우 새로운 동작 추가 객체지향의 장점 이용 모두 객체지향적이다 20장. 내 프로젝트 군살 빼기 책임 찾기 다른 기법 더 나아가기 클래스 추출을 마친 후 21장. 동일 코드의 반복 수정, 그만할 수는 없을까? 첫 번째 단계 22장. '괴물 메소드'와의 혈투, 승부수는 적절한 테스트 루틴 여러 가지 괴물 메소드 자동화된 리팩토링 지원으로 괴물 메소드 공략 수동 리팩토링 도전 전략 23장. 위반사항을 점검하는 몇 가지 기법 하이퍼웨어 편집 단일 목적 편집 서명 보전 컴파일러 의존 24장. 무너진 코드의 하늘, 솟아날 구멍이 있을까? 3부. 반드시 넘어야 할 산: 코드 변경의 난맥, 의존관계를 극복하라! 25장. 의존관계를 깨는 기법 매개변수 적응 메소드 객체 탈출 정의 완료 전역 참조 캡슐화 정적 메소드 드러내기 호출 추출과 오버라이드 팩토리 메소드 추출과 오버라이드 게터 추출과 오버라이드 구현체 추출 인터페이스 추출 인스턴스 위임자 도입 정적 세터 도입 연결 대체 생성자 매개변수화 메소드 매개변수화 매개변수 원시화 특징 끌어올리기 의존관계 밀어내리기 함수를 함수포인터로 대체 전역 참조를 게터로 대체 메소드 하위클래스화와 오버라이드 인스턴스 변수 대체 템플릿 재정의 텍스트 재정의 부록. 리팩토링 메소드 추 |
레가시코드 라는게 이책에선 옛날코드(C언어,코볼등..)을 말하는게 아니고 기존에 작성되어 현장에서 잘 돌아가고 있는 하지만 변경이 불가피한 코드를 말한다.
책 10페이지에서는 다음과 같이 레가시코드에 대해 설명하고 있다.
레거시 코드는 다른 사람한테서 가져온 코드다. 우리 회사가 다른 회사로부터 코드를 얻어 왔을 수도 있고 원래 팀에 있던 사람들이 다른 프로젝트로 옮겨가서 코드를 얻어 왔을 수도 있다.
제목에서의 레거시코드라는 단어의 구식이라는 인상때문에 책을 사지 않았지만 중고로 싸게 나와서(ㅈㅅ..) 구매했다.
첫인상과 다르게 저자는 켄트벡의 XP와 xUnit, 마틴파울러의 리펙토링 (관련 기법을 출간한 사람의 저자를 기준으로 말이다... 사실 리펙토링은 마틴 파울러가 유행시켰지만 원소스는 켄트벡이다. 라고 리펙토링 책에서 마틴이형이 고백한바 있다)의 정수를 그대로 습득하여 자기것으로 만들어 본인의 현장경험을 풀어낸 책이었다.
아마 기존의 대가의 궁둥짝에 치어 다른 "레거시코드"라는 새로운 포지션을 잡은듯하다. 예를 들어 또 하나의 리펙토링, 또 하나의 XP 라던가 xUnit + 리펙토링과 XP와의 절묘한 조합. 뭐 이런 식의 타이틀로 책을 출간했다면 아류나 2등의 신세를 면치 못했을 것이다. 잭 트라우트가 말하는 업계 리더의 포지셔닝 개념처럼 말이다.(포지셔닝 69페이지)
이책의 마틴파울러의 리펙토링과 다르게 (리펙토링은 교과서를 보는듯한 잘짜여진 절차와 다소 딱딱한 문체) 현장에서 키보드를 두드리기 직전에 요구되는 기법을 설명하는 듯하다.
다음과 같은 문장이 이를 설명해준다.
편집하고 기도하기와 덮고 수정하기.(37페이지)
객체지향의 원칙과 테스트와 리펙토링을 돌아가고 있는 코드에 적용시키는 상황에 읽어보면 현장감있는 좋은 책이다. 내 현장과 다른게 아쉽지만..
레거시 코드의 엄밀한 정의는 다른 사람한테서 가져온 코드다. 하지만 여기에는 더 많은 의미가 있다. 업계에서는 레거시 코드는 이해할 수 없고 변경시키기 힘든 코드를 지칭하는 용어로 종종 사용된다. 이 레거시 코드에는 테스트 코드도 없다.
코드가 얼마나 훌룡하게 작성되어 있는지 여부와는 상관없이 테스트 루틴이 없는 코드는 불량코드다. 테스트 루틴이 없으면 우리 코드가 더 나아지는지 더 나빠지는지를 알수 없게 된다.책 전반에 걸쳐서 테스트와 리팩토링을 적절히 버무려서 설명하고 있습니다. 단위테스트, 테스트 하니스, TDD등 테스트에서 한마디로 설명하기 어려운 개념들을 명쾌하게 정의하고 있습니다만 후반부 리팩토링에 대한 설명은 조금 지루하게 느껴질 수 있을거 같습니다.
이런 개판 번역은 삼각형 이후로 오래간만이다. 에이콘 출판사에 대해서 좋은 평가를 가지고 있었는데, 이 책 때문에 -100 점이다. 원서로 읽었던 내용이 머리 속에서 사라져 버릴 거 같은 느낌이 들 정도다. 나참...
원서를 사거나 빌려 볼 수 있다면 그냥 그걸 보길 바란다.
p.s 역자들 이름도 블랙리스트에 올려놨다. 쩝 ;;;