SlideShare a Scribd company logo
1 of 14
Refactoring 리팩토링 6장    Replace Temp with Query   Introduce Explaining Variable   Split Temporary Variable 아꿈사http://cafe.naver.com/architect1 TTF	http://www.npteam.net
Replace Temp with Query ■ 임시 변수를 질의로 대체하기
Replace Temp with Query ■ 임시 변수의 문제점  - 임시 변수는 임시로 사용되고, 특정 부분에서만 의미를 가지므로 문제가 된다. ■ 임시 변수를 질의 메소드로 바꾸면?  - 임시 변수는 메소드 내에서만 사용된다.  질의 메소드는 클래스 어디서든 접근 가능하다.  - 임시 변수가 사용되면 메소드가 길어지는  경향이 있다.  질의 메소드를 호출하기 때문에, 메소드 길이가 짧아진다.
Replace Temp with Query ■ 질의 메소드로 바꾸는 절차  - 임시 변수에 값이 한번만 대입되는지 확인한다.  값이 여러 번 대입되면, 임시 변수를 나누어서 작은 단위로 처리한다.  - 대입문의 우변을 메소드로 추출한다.  추출된 메소드를private으로 선언한다. 나중에 public으로 바꿀수도 있다.   - Inline Temp(140)를 적용한다.   대부분 inline이 가능한 변수들이다.
Replace Temp with Query ■ 예제  - 2개의 임시 변수를 제거하고 싶다. basePrice, discountFactor
Replace Temp with Query ■ 예제  - final로 선언하여 컴파일 테스트를 한다.
Replace Temp with Query ■ 예제  - 대입문의 우변을 메소드로 뽑아낸다.
Replace Temp with Query ■ 예제   - 임시변수 참조하는 곳을 바꾼다.  - 임시변수의 선언도 삭제한다.
Replace Temp with Query ■ 예제   - discountFactor에 대해서도 동일한 작업을 한다.
Introduce Explaining Variable ■ 설명하는 이름으로 된 임시변수
Introduce Explaining Variable ■ 설명하는 이름으로 된 임시변수   - 수식이 복잡해져 알기 여려운 상황에서 수식의 결과를 설명하는 잘 지어진 이름의 임시 변수로 설명할 수 있다.   - 그러나 임시변수는 좋지 않다.  Extract Method를 추천한다.   - 복잡한 로직일 경우    1. 복잡한 조건을 임시변수로 리펙토링       (Introduce Explaining Variable)    2. 임시변수를 질의로 대체하기       (Replace Temp with Query)
Split Temporary Variable ■ 각각의 임시변수 분리하기
Split Temporary Variable ■ 각각의 임시변수 분리하기   - 임시변수는 긴 코드의 결과값을 참조하기 위해 보관하는 용도로 사용된다.   - 이런 종류의 변수는 값이     “한번만” 설정되어야 한다.   - 각각의 용도에 맞게 변수를 따로 지정해야 한다.  하나의 임시변수를 두 가지 용도로 사용하면, 코드를 보는 사람이 매우 혼란스러울 수 있다.
감사합니다.

More Related Content

Viewers also liked

Cruise control net_and_terminal_with_gamedev
Cruise control net_and_terminal_with_gamedevCruise control net_and_terminal_with_gamedev
Cruise control net_and_terminal_with_gamedev
Heo Seungwook
 
2010 연말행사 온라인스터디
2010 연말행사 온라인스터디2010 연말행사 온라인스터디
2010 연말행사 온라인스터디
Heo Seungwook
 
리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기
Heo Seungwook
 
리펙토링 10장 p316_p324
리펙토링 10장 p316_p324리펙토링 10장 p316_p324
리펙토링 10장 p316_p324
Heo Seungwook
 
Master slave pattern
Master slave patternMaster slave pattern
Master slave pattern
Heo Seungwook
 
프로그램은 왜 실패하는가
프로그램은 왜 실패하는가프로그램은 왜 실패하는가
프로그램은 왜 실패하는가
Heo Seungwook
 
Client dispatcher server_pattern
Client dispatcher server_patternClient dispatcher server_pattern
Client dispatcher server_pattern
Heo Seungwook
 

Viewers also liked (9)

Cruise control net_and_terminal_with_gamedev
Cruise control net_and_terminal_with_gamedevCruise control net_and_terminal_with_gamedev
Cruise control net_and_terminal_with_gamedev
 
2010 연말행사 온라인스터디
2010 연말행사 온라인스터디2010 연말행사 온라인스터디
2010 연말행사 온라인스터디
 
리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기
 
리펙토링 10장 p316_p324
리펙토링 10장 p316_p324리펙토링 10장 p316_p324
리펙토링 10장 p316_p324
 
Pac pattern
Pac patternPac pattern
Pac pattern
 
Master slave pattern
Master slave patternMaster slave pattern
Master slave pattern
 
프로그램은 왜 실패하는가
프로그램은 왜 실패하는가프로그램은 왜 실패하는가
프로그램은 왜 실패하는가
 
Client dispatcher server_pattern
Client dispatcher server_patternClient dispatcher server_pattern
Client dispatcher server_pattern
 
Mvc pattern
Mvc patternMvc pattern
Mvc pattern
 

리펙토링 6장 p147_p158

  • 1. Refactoring 리팩토링 6장 Replace Temp with Query Introduce Explaining Variable Split Temporary Variable 아꿈사http://cafe.naver.com/architect1 TTF http://www.npteam.net
  • 2. Replace Temp with Query ■ 임시 변수를 질의로 대체하기
  • 3. Replace Temp with Query ■ 임시 변수의 문제점 - 임시 변수는 임시로 사용되고, 특정 부분에서만 의미를 가지므로 문제가 된다. ■ 임시 변수를 질의 메소드로 바꾸면? - 임시 변수는 메소드 내에서만 사용된다.  질의 메소드는 클래스 어디서든 접근 가능하다. - 임시 변수가 사용되면 메소드가 길어지는 경향이 있다.  질의 메소드를 호출하기 때문에, 메소드 길이가 짧아진다.
  • 4. Replace Temp with Query ■ 질의 메소드로 바꾸는 절차 - 임시 변수에 값이 한번만 대입되는지 확인한다.  값이 여러 번 대입되면, 임시 변수를 나누어서 작은 단위로 처리한다. - 대입문의 우변을 메소드로 추출한다.  추출된 메소드를private으로 선언한다. 나중에 public으로 바꿀수도 있다. - Inline Temp(140)를 적용한다.  대부분 inline이 가능한 변수들이다.
  • 5. Replace Temp with Query ■ 예제 - 2개의 임시 변수를 제거하고 싶다. basePrice, discountFactor
  • 6. Replace Temp with Query ■ 예제 - final로 선언하여 컴파일 테스트를 한다.
  • 7. Replace Temp with Query ■ 예제 - 대입문의 우변을 메소드로 뽑아낸다.
  • 8. Replace Temp with Query ■ 예제 - 임시변수 참조하는 곳을 바꾼다. - 임시변수의 선언도 삭제한다.
  • 9. Replace Temp with Query ■ 예제 - discountFactor에 대해서도 동일한 작업을 한다.
  • 10. Introduce Explaining Variable ■ 설명하는 이름으로 된 임시변수
  • 11. Introduce Explaining Variable ■ 설명하는 이름으로 된 임시변수 - 수식이 복잡해져 알기 여려운 상황에서 수식의 결과를 설명하는 잘 지어진 이름의 임시 변수로 설명할 수 있다. - 그러나 임시변수는 좋지 않다.  Extract Method를 추천한다. - 복잡한 로직일 경우 1. 복잡한 조건을 임시변수로 리펙토링 (Introduce Explaining Variable) 2. 임시변수를 질의로 대체하기 (Replace Temp with Query)
  • 12. Split Temporary Variable ■ 각각의 임시변수 분리하기
  • 13. Split Temporary Variable ■ 각각의 임시변수 분리하기 - 임시변수는 긴 코드의 결과값을 참조하기 위해 보관하는 용도로 사용된다. - 이런 종류의 변수는 값이 “한번만” 설정되어야 한다. - 각각의 용도에 맞게 변수를 따로 지정해야 한다.  하나의 임시변수를 두 가지 용도로 사용하면, 코드를 보는 사람이 매우 혼란스러울 수 있다.