티스토리 뷰
6장. 고칠 건 많고 시간은 없고
6.1. Sprout Method
Sprout 메서드를 만드는 순서
- 어느 부분에 코드 변경이 필요한지 식별한다.
- 변경이 한 메서드 안의 한 부분에 있는 단일한 일련의 스테이트먼트라면, 관련 작업을 하는 새로운 메서드를 호출하는 코드를 작성한다. 그리고 주석을 표시한다.
- 소스 메서드에 어떤 지역 변수들이 필요한지를 결정하고 호출에 필요한 매개변수를 만든다.
- Sprout 메서드가 소스 메서드에 값을 반환해야 할지 결정한다. 값을 반환해야 한다면 호출을 변경시켜 반환된 값이 변수에 할당되도록 한다.
- 테스트 주도 개발 방법을 사용해 sprout 메서드를 개발한다. 호출이 동작하게 만들기 위해 소스 메서드에 있는 주석문을 제거한다.
6.2. Sprout Class
Sprout 클래스를 만드는 순서
- 어느 부분에 코드 변경이 필요한지 식별한다.
- 변경이 한 메서드 안의 한 부분에 있는 단일한 일련의 스테이트먼트라면, 그 작업을 하는 클래스를 위한 적당한 이름을 생각한다. 그리고 그 클래스 안에 있는 메서드를 호출한다. 그 메서드는 당신이 해야 할 작업을 수행할 것이다. 그리고 주석을 표시한다.
- 소스 메서드에 어떤 지역 변수들이 필요한지 결정하고 클래스의 생성자를 호출하는 데 필요한 매개변수를 만든다.
- Sprout 클래스 소스 메서드에 값을 반환해야 할지 결정한다. 값을 반환해서 한다면 호출을 변경시켜 반환된 값이 변수에 할당되도록 한다.
- 우선 sprout 클래스를 개발한다. 테스트 주도 개발을 참고하자.
- 객체 생성과 호출이 동작하도록 만들기 위해 소스 메서드에 있는 주석문을 지운다.
6.3. Wrap Method
방법 1. 기존의 메서드를 수정하는 방법
방법 2. 새로운 메서드를 생성하는 방법
방법 1 순서
- 변경시켜야 할 메서드를 식별한다.
- 변경이 한 메서드 안의 한 부분에 있는 단일한 일련의 스테이트먼트들에서 일어난다면 그 메서드를 재명명하고, 옛 메서드와 같은 이름과 서명을 갖는 새 메서드를 만든다. 이 작업을 하는 동안 서명 보전하는 것을 잊지 말자.
- 새로운 메서드에 옛 메서드 호출 부분을 위치시킨다.
- 새로운 특징을 위한 메서드를 개발하고 한번 테스트한 후에 새 메서드에서 그 메서드를 호출한다.
방법 2 순서
- 변경시켜야 할 메서드를 식별한다.
- 변경이 한 메서드 안의 한 부분에 있는 단일한 일련의 스테이트먼트에서 일어난다면, 테스트 주도 개발을 사용하는 새 메서드를 개발한다.
- 새 메서드와 기존 메서드를 호출하는 또 다른 메서드를 만든다.
6.4. Wrap Class
Wrap 클래스를 만드는 순서
- 어느 부분에 코드 변경이 필요한지 식별한다.
- 변경이 한 메서드 안의 한 부분에 있는 단일한 일련의 스테이트먼트에서 일어난다면, 생성자 매개변수로 포장하려는 클래스를 받는 클래스를 하나 만든다. 테스트 하니스 안에 있는 소스 클래스를 포장하는 클래스를 생성하는 데 문제가 있다면, 포장된 클래스 상에 구현체 추출이나 인터페이스 추출을 사용해 래퍼를 인스턴스화한다.
- 그 클래스 상에 테스트 주도 개발 방법을 사용해 메서드를 하나 생성한다. 이것은 새로운 작업이 될 것이다. 새로운 메서드와 포장된 클래스 상에 있는 옛 메서드를 호출하는 또 다른 메서드를 작성한다.
- 새로운 동작이 이뤄지도록 해야 하는 부분에 있는 코드 내의 포장 클래스를 인스턴스화한다.
- James Song
'Books_tech' 카테고리의 다른 글
마이클 C. 페더스 <레거시 코드 활용 전략> 8장 요약 (0) | 2016.12.21 |
---|---|
마이클 C. 페더스 <레거시 코드 활용 전략> 7장 요약 (0) | 2016.12.19 |
마이클 C. 페더스 <레거시 코드 활용 전략> Part 1 요약 (1) | 2016.12.11 |
폴 그레이엄 <해커와 화가> (0) | 2016.09.24 |
가와마타 아키라 <C# 코딩의 기술 - 기본편> (0) | 2016.09.03 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
TAG
- #scottmeyers
- #uwp
- #자녀교육
- #레거시코드
- #EffectiveModernCpp
- #팀개발
- #코드최적화
- #ndc
- #build2016
- #임백준
- #마이클페더스
- #알고리즘
- Scott Meyers
- #세미나
- Effective Modern C++
- #로버트마틴
- Effective C++
- #ModernCPP
- 상속
- #클린코드
- #techdays2015
- #프로그래밍심리학
- 책
- #cplusplus
- #mva
- 객체 지향 설계
- #csharp
- #스콧마이어스
- #cpp
- #제럴드와인버그
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함