sitelink1 | http://이클립스 기반 프로젝트 ...페이지) |
---|---|
sitelink2 | |
sitelink3 | http://1 |
마우스 오른쪽 버튼 클릭에서 나타나는 메뉴로 제공되는 이클립스의 Refactor는 프로젝트의 기능에 영향을 미치지 않고, 변경하려는 코드와 관련 있는 코드를 전체적으로 리펙토링하도록 돕는다.
예를들어, Java 소스의 파일명을 그냥 변경하게 되면 이 소스를 사용하고 있는 다른 소스에 컴파일 에러가 날 것이 분명하고, 에러가 나는 소스를 찾아가며 수정해야 한다.
그러나 이클립스의 리팩토링을 사용하면, 즉 소스 에디터의 팝업 메뉴에서 Refactor > Rename 을 사용해 이름을 변경하면 이 소스를 호출해 사용하고 있는 소스를 모두 찾아 자동으로 전체 수정을 해준다.
[리펙토링 메뉴]
이름 | 기능 | 단축키 |
Rename | 선택한 요소(소스 명, 메소드, 로컬 변수, 메소드 파라미터, 패키지 등)의 이름과 이 요소를 참조하는 모든 것을 수정한다. | [Alt]+[Shift]+[R] |
Move | 선택한 요소(파일, 메소드, 패키지, 타입 등)을 다른곳으로 이동시키고, 이 요소를 참조하는 코드를 수정한다. | [Alt]+[Shift]+[V] |
Change Method Signature |
메소드의 modifier, 리턴 타입, 파라미터의 이름, 파라미터의 타입, 파라미터의 순서, 파라미터의 개수 등을 변경하고, 이를 참조하는 다른 모든 소스의 코드를 수정한다. | |
Convert Anonymous Class to Nested |
메소드 내에서 사용되는 익명의 클래스 예를 들어, 리스너(listener)등을 추가할 때, 메소드의 파라미터로 작성하는 익명의 Inner 클래스를 Inner이름을 명시한(Nested) 클래스로 변경한다. | |
Convert Nested Type to Top Level |
멤버 클래스를 별도의 소스 파일로 변경한다. | |
Push Down | 자식 클래스에게 부모 클래스의 메소드를 선택적으로 내리고 Push Down된 메소드는 부모 클래스에서 삭제된다. 미리보기를 통해 생성될 내용을 볼 수 있다. | |
Pull Up | Push Down과는 반대로 자식 클래스의 특정 메소드를 부모 클래스로 올리고 자식 클래스에는 삭제시킨다. | |
Extract Interface | 클래스 명을 선택하고, 이 메뉴를 실행하면, 이 클래스의 인터페이스를 추출한다. | |
Use Supertype Where Possible |
선택한 타입 객체의 부모 객체 리스트 중에 하나를 선택하여 부모 타입으로 변경시킬 수 있다. | |
Inline |
변수나 메소드, 상수 등의 요소를 대신하여 원래의 값으로 자동 생성한다. 로컬 변수를 인라인하면, 변수 대신에 변수의 원래 값을 생성한다. 메소드를 인라인하면, 이 메소드의 원래 값을 생성한다. |
[Alt]+[Shift]+[I] |
Conert Local Variable to Field |
로컬 변수를 멤버 변수로 변환시킨다. | |
Encapsulate Field | 멤버 변수에 직접 접근하지 못하도록 getXXX()메소드와 setXXX()메소드를 통해 접근하도록 변경한다. |