어떤 코드를 그룹으로 묶어도 되겠다고 판단되면,
그 코드를 뺴내어 목적을 잘 나타내는 직관적 이름의 메서드로 만든다
특징
- 매우 자주 사용됨
- 메서드가 너무 길거나 코드에 주석을 달아야만 의도를 이해할 수 있을때 사용
- 메서드가 적절히 잘게 쪼개져있으면 다른 메서드에서 사용하기 수월함
- 효과를 보려면 메서드의 이름도 잘 지어야 한다
- 그리고 쪼개는 것도 잘해야겠지… 명확하게
 
- 그리고 쪼개는 것도 
- 메서드명과 메서드 내용의 의미적 차이가 중요하다
- 명료하기만 하면 메서드 길이가 메서드명보다 짧아도된다
 
방법
- 목적에 부합하는 새 이름의 메서드를 생성한다
- 메서드명은 원리가 아니라 기능을 나타내야 한다.
 
- 기존 메서드에서 빼낸 코드를 새로 생성한 메서드로 복사한다
- 뺴낸 코드에서 기존 메서드의 모든 지역변수 참조를 찾는다
- 새로 생성한 메서드의 지역변수나 매개변수로 활용할 것이다
 
- 추출한 메서드에서 사용되는 임시변수에 대해 처리한다
- 원본 메서드에서 뺴낸 코드 부분을 새로 생성한 메서드 호출로 수정한다
지역변수 처리
- 
추출한 메서드에서만 사용되는 값일 경우 - 해당 메서드로 임시변수를 분리
 
- 
원본 메서드, 추출한 메서드 양쪽에서 다 사용되는 지역변수인데 추출한 메서드에서는 읽히기만 할 경우 - 추출한 메서드에 매개변수로 전달
 
- 
원본 메서드, 추출한 메서드 양쪽에서 다 사용되는 지역변수이고 추출한 메서드에서 값이 변경될 경우 - 
변경되는 지역변수가 1개일 경우 리턴해주는 형식으로 작성 가능 1 
 2
 3
 4
 5int a = 0; 
 // do something to `a`
 print(a);는 아래처럼 변경 가능 1 
 2int a = doSomething(0); // 필요한 값을 매개변수로 전달해줄 수 있음 
 print(a);
- 
2개 이상의 변수가 변경되는 경우, 메서드가 하나의 값을 반환하도록 더욱 분리해주는 것이 좋다. 가능하면 하나의 값만 반환하는 것이 좋다고 한다. 
 
- 
- 
임시변수가 너무 많으면 임시 변수를 메서드 호출로 전환같은 것을 사용해서 임시변수의 수를 줄이는 것이 좋다.
참고 : 마틴 파울러, 『리팩토링』, 김지원 옮김, 한빛미디어(2012)