Eclipse 리팩토링 (Refactoring) 사용하기

황제낙엽 2007.07.27 11:14 조회 수 : 2803 추천:85

마우스 오른쪽 버튼 클릭에서 나타나는 메뉴로 제공되는 이클립스의 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()메소드를 통해 접근하도록 변경한다.  
번호 제목 글쓴이 날짜 조회 수
78 INSTALL_FAILED_NO_MATCHING_ABIS WHEN INSTALL APK ? file 황제낙엽 2017.03.28 11539
77 svn: E175002: connection refused by the server 황제낙엽 2019.06.21 3845
» 리팩토링 (Refactoring) 사용하기 황제낙엽 2007.07.27 2803
75 Eclipse TODO 사용법 / Task Tags 사용법 황제낙엽 2018.01.23 1923
74 [Android Studio] Unsupported major.minor version 52.0 황제낙엽 2016.08.18 1200
73 [Android Studio] Error:Execution failed for task ':app:compileDebugJavaWithJavac'. 황제낙엽 2016.08.18 582
72 The ObjectAid UML Explorer for Eclipse (Reverse Engineering) 황제낙엽 2016.12.08 524
71 Eclipse 인터페이스는 영문, 도움말은 한글로 보기 황제낙엽 2007.03.07 489
70 Setting property 'source' to 'org.eclipse.jst.jee.server:board' did not find a matching property. 황제낙엽 2013.04.11 448
69 Eclipse Javadoc 의 Author 설정하기 file 황제낙엽 2017.06.05 389
68 workspace 자동 refresh 황제낙엽 2017.07.09 319
67 APK파일 생성 (명령줄에서 앱 빌드) 황제낙엽 2019.10.08 283
66 이클립스 다국어 설정 (UTF-8) file 황제낙엽 2006.09.20 280
65 java.net과 이클립스를 이용한 오픈소스 자바 어플리케이션 개발 (1부. 이클립스에서 새로운 프로젝트 생성하기) file 황제낙엽 2007.02.28 254
64 255자 넘는 경로명을 가진 파일/디렉토리 강제 삭제하기 file 황제낙엽 2015.11.21 252
63 Analyze APK 황제낙엽 2019.10.08 245
62 svn:ignore 추가 방법 file 황제낙엽 2018.04.13 239
61 "탭(tab) 1" to "스페이스(space) 4" 로 변경 황제낙엽 2017.01.20 224
60 Java was started but returned exit code=13 file 황제낙엽 2018.03.25 201
59 Eclipse 관련 FAQ 황제낙엽 2005.10.13 188