SlideShare ist ein Scribd-Unternehmen logo
1 von 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 ■ 각각의 임시변수 분리하기   - 임시변수는 긴 코드의 결과값을 참조하기 위해 보관하는 용도로 사용된다.   - 이런 종류의 변수는 값이     “한번만” 설정되어야 한다.   - 각각의 용도에 맞게 변수를 따로 지정해야 한다.  하나의 임시변수를 두 가지 용도로 사용하면, 코드를 보는 사람이 매우 혼란스러울 수 있다.
감사합니다.

Weitere ähnliche Inhalte

Andere mochten auch

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_gamedevHeo Seungwook
 
2010 연말행사 온라인스터디
2010 연말행사 온라인스터디2010 연말행사 온라인스터디
2010 연말행사 온라인스터디Heo Seungwook
 
리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기리펙토링 4장 테스트만들기
리펙토링 4장 테스트만들기Heo Seungwook
 
리펙토링 10장 p316_p324
리펙토링 10장 p316_p324리펙토링 10장 p316_p324
리펙토링 10장 p316_p324Heo Seungwook
 
Master slave pattern
Master slave patternMaster slave pattern
Master slave patternHeo Seungwook
 
프로그램은 왜 실패하는가
프로그램은 왜 실패하는가프로그램은 왜 실패하는가
프로그램은 왜 실패하는가Heo Seungwook
 
Client dispatcher server_pattern
Client dispatcher server_patternClient dispatcher server_pattern
Client dispatcher server_patternHeo Seungwook
 

Andere mochten auch (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 ■ 각각의 임시변수 분리하기 - 임시변수는 긴 코드의 결과값을 참조하기 위해 보관하는 용도로 사용된다. - 이런 종류의 변수는 값이 “한번만” 설정되어야 한다. - 각각의 용도에 맞게 변수를 따로 지정해야 한다.  하나의 임시변수를 두 가지 용도로 사용하면, 코드를 보는 사람이 매우 혼란스러울 수 있다.