Introduce Field Refactoring  

 

이 섹션은 Introduce Field 리팩토링 위에서 당신에게 포괄적인  overview를 제공하고  how  이 리팩토링이 IntelliJ IDEA에서 사용될 수 있는가를 제공합니다.

개요


Introduce Field 리팩토링은 새로운 필드를 선언하고, 선택된 표현식과 함께 그것을 초기화합니다.  원래 표현식은 필드의 사용으로 교체됩니다.


예를 들면, 리팩토링 전의 일부 코드가 여기에 있습니다:

 
    public class MyApplet extends JApplet {
 
        public void init() {
            Container cp = getContentPane();
            cp.setLayout(new FlowLayout());
            cp.add(new Button("Button"));
        }
    }


우리는 Introduce Field 리팩토링을 적용하기 위해 새로운 버튼 ("Button")을 선택합니다.

이후 우리는 다음의 코드를 가집니다:

 
    public class MyApplet extends JApplet {
        private JButton button = new JButton("Button");
 
        public void init() {
            Container cp = getContentPane();
            cp.setLayout(new FlowLayout());
            cp.add(button);
        }
    }

 

필드 생성하기


필드를 생성하기 위해, 에디터에서 새로운 필드에 할당된 표현식을 선택하십시오.




Introduce Field 리팩토링에 대한 표현식을 선택하기 위해 Ctrl + W  (단어 선택)를 사용하는 것은 아주 편리합니다.

코드의 블록 확장을 선택하고 당신은 캐럿을 내부의 어느 곳에 배치하고, Ctrl + W를 몇 번 눌러서 어떤 표현식이라도 쉽게 코드에서 선택해도 좋습니다:


주 메뉴에서 또는 에디터에서 오른쪽 버튼을 클릭하여 불려지는 팝업 메뉴에서 Refactor |  Introduce Field...  항목을 클릭 하십시오.

다음의 Introduce Field 다이얼로그가 나타납니다:



Introduce Field 다이얼로그의 최상위에서, 생성 필드의 타입이 표시됩니다.

Name 텍스트 필드에서 당신은 필드에 이름을 입력시킬 수 있거나, IDEA에 의해 제안된 하나를 사용할 수 있습니다.  특히 제안된 이름은 그 타입 위에서 선택된 표현식에 의존합니다.

만일 당신이 코드 스타일 옵션 에서 필드를 위해 이름 식별 번호를 지정했더라면 제안된 필드 이름을 형성하는 것은 IDEA에 의해 사용될 것입니다.


만일 선택된 표현식의 다중 발생이 있으면, 그들 모두는 에디터에서 강조될 것입니다. 그리고 Replace all occurrences of expression (  <number of occurrences found>  ) 체크박스는 다이얼로그 윈도우의 바닥에서 나타날 것 입니다. 만일 체크박스가 선택되면, 선택된 표현식의 모든 발생은 교체될 것 입니다. 그렇지 않으면 오로지 당신이 처음에 지정한 표현식만이 변경될 것 입니다.

 


다이얼로그는 3개의 옵션 그룹을 가집니다:

초기화

필드가 초기화된 곳을 정의합니다:

 Current method - 필드는 선택된 표현식에 앞서 메소드 내에서 즉시 초기화됩니다.
 
Field declaration - 필드는 다른 필드와 함께 초기화됩니다.
 
Class constructor - 필드는 클래스 생성자에서 초기화됩니다.

가시성

필드를 위해 가시성 범위를 결정합니다:

 Private  
 
Package local  
 
Protected  
 
Public  

다른 변경자

필드를 위해 변경자를 결정합니다:

 Final  


 


만일 필드가 현재의 메소드로 초기화되면 final 체크 박스는 불가능하게 하게 됩니다.


만일 선택된 코드가 유효한 표현식을 표시하지 않으면 당신에게 다음의 에러 메시지로 프롬프트 될 것입니다: