|
Extract Method 리팩토링은 사용자에게 선택된 코드 프래그먼트를 메소드로 바꾸는 것을 허락합니다. 이 리팩토링에 관한 더 자세한 사항은 Overview를 참조하십시오, 또는 how to extract a method을 기술한 섹션으로 바로 가십시오.
|
Extract Method 리팩토링이 호출될 때, IDEA는 코드의 선택된 블록을 분석하고, 선택된 코드 프래그먼트를 위한 입력인 변수와 그것을 위한 출력인 변수를 감지합니다. 만일 정확하게 한 개의 출력 변수가 있으면, 그것은 추출한 메소드를 위해 반환 값으로 사용됩니다. 다중 출력 변수가 있을 경우에, Extract Method 리팩토링은 적용되지 않을지도 모릅니다. 그리고 오류 메시지가 나타납니다. 이 경우 Extract
Method 작업을 허용하는 가능한 약간의 솔루션이 있습니다. 예를 들면, 당신은 모든 출력 값을 포함하는 특별한 데이터-클래스를 생성해도 좋습니다. 그런 가능성의 큰 다양성 때문에, 선택은 당신까지 달려 있고 Extract Method 리팩토링이 자동 모드에서 다중 출력 값에 작동되지 않기 때문에, 당신의 코드를 리팩토링을 적용하기 전에 변경해야만 합니다.
|

|
The
code fragment to form the method, may not necessarily be a set of statements. It
may also be an expression used somewhere in the code. For
example, applying the Extract Method to:
메소드를 형성하는 코드 프래그먼트가 반드시 한 세트의 스테이트먼트가 아닐지도 모릅니다. 또한 코드에서 대체로 사용되는 표현식일지도 모릅니다. 예를 들면 Extract Method를 다음에 적용하는 것:

results in:
결과는:

|

|
다중 출력 변수의 경우에 더하여, Extract
Method 리팩토링은 더 약간의 경우에서 작동하지 않을 것입니다. 예를 들면, 어느 쪽이 조건부로 메소드를 포함하는 것에서 리턴하고, 그것의 끝에 놓이지 않는 코드 프래그먼트에 대해서 작동하지 않을 것입니다.
|
Overview로부터 예제에 근거합니다
|
1.
|
메소드에 변형되는 코드의 블록을 선택하십시오.
|
|
2.
|
Refactor 메뉴 위에서, Extract
Method... 클릭하십시오(또는 Ctrl + Alt + M 을 누릅니다). 다른 방법은 Refactor 에 포인트하고 선택을 오른쪽 버튼을 클릭하고 Extract
Method...를 클릭하는 것 입니다.
다음 다이얼로그는 모든 입력 변수가 디폴트 매개변수로서 리스트 되는 곳에서 나타날 것입니다. (만일 매개 변수 접두사가 File
| Settings | IDE Settings | Code Style 다이얼로그에서 설정되었다면, 이 접두사는 이미 추가되었습니다):

|
|
3.
|
Name 텍스트 필드에서, 새로운 메소드의 이름을 지정하십시오.
|
|
4.
|
Parameters 목록에서:
상응하는 체크박스를 선택/제거하여 메소드 매개 변수로서 넘겨질 변수를 지정하십시오; 만일 매개 변수가 불가능하다면, 초기값과 함께 상응하는 타입의 로컬 변수는 추출 모드에서 생성될 것 입니다. 그래서 당신은 수동으로 적절한 값으로 이니셜라이저를 입력해야만 할 것 입니다.
상응하는 매개 변수 라인을 더블 클릭하고 새로운 이름을 입력하여 원하는 매개 변수의 이름을 바꾸십시오
|
|
5.
|
Visibility 그룹에서, 새로운 메소드를 위한 가시성을 지정하십시오.
|
|
6.
|
새로운 메소드에 넘어가는 매개 변수의 순서를 지정하기 위해 Move Up and Move
Down를 사용하십시오.
|
|
7.
|
OK를 클릭하십시오. 새로운 메소드가 생성될 것이고 코드 프래그먼트는 메소드 콜로 교체될 것입니다.
|
|
8.
|
만일 IDEA가 현재의 클래스 내에서 새롭게 생성된 메소드를 부르는 콜과 함께 교체되는 어떤 중복된 코드 조각이 있는 것을 감지하면, 당신에게 Process Duplicates 다이얼로그가 프롬프트 될 것 입니다.

만일 당신은 No 를 누르면, 오로지 처음으로 선택된 코드의 조각은 새롭게 생성된 메소드를 부르는 콜을 위해 교체될 것입니다. 만일 당신이
Yes를 선택하면, 모든 중복된 조각은 다음의 다이얼로그의 도움과 함께 처리될 것입니다.

당신이 강조된 코드를 선택하는 것에 따라 메소드 콜(만일 당신이 Yes 를 선택하면)을 위해 변경되거나, 또는 그대로 있을 것입니다(만일 당신이 No를 선택하면).
|
|