Extract Metho
- Problem : 그룹으로 함께 묶을 수 있는 코드 조각이 있는 경우
- Solution : 코드의 목적이 잘 드러나도록 메소드의 이름을 지어 별도의 메소드로 뽑아 낸다
# 수정 전
void pringOwing() {
pring Banner();
System.out.println("name : " + name);
System.out.println("amount : " + getOutstanding());
}
# 수정 후
void printOwing() {
printBanner();
printDetails(getOutstanding());
}
void printDetails(double outstanding) {
System.out.println("name : " + name);
System.out.println("amount : " + getOutstanding());
}
( 절차 )
- 메소드를 새로 만들고, 의도를 잘 나타낼 수 있게 이름을 정한다.
- 원래 메소드에서 뽑아내고자 하는 부분의 코드를 복사하여 새 메소드로 옮긴다.
- 원래 메소드에서 사용되고 있는 지역변수가 뽑아낸 코드에 있는지 확인한다. ( 이런 지역변수는 새로운 메소드의 지역변수나 파라미터가 된다.)
- 뽑아낸 코드 내에서만 사용되는 임시변수가 있는지 확인한다. 있다면 새로 만든 메소드의 임시변수로 선언한다.
- 뽑아낸 코드 내에서 지역변수의 값이 수정되는지 확인한다
- 만약 하나의 지역변수만 수정된다면, 뽑아낸 코드의 쿼리를 보고 수정된 결과를 관련된 변수에 대입할 수 있는지 확인한다.
- 지역변수가 두개 이상 있다면 쉽게 메소드로 추출할 수 없기 떄문에 Split Temporary variable을 사용하거나 임시변수를 Replace Temp with Query로 제거한다.
6. 뽑아논 코드에서 읽기만 하는 변수는 새 메소드의 파라미터로 넘긴다
7. 지역변수와 관련된 사항을 다룬 후 컴파일하고 원래 메소드에서 뽑아낸 코드 부분은 새로 만든 메소드를 호출하도록 교체한다.
반응형
'Tech Stack' 카테고리의 다른 글
Refectoring (0) | 2021.09.15 |
---|