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

황제낙엽 2007.07.27 11:14 조회 수 : 3378 추천: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()메소드를 통해 접근하도록 변경한다.  
번호 제목 글쓴이 날짜 조회 수
82 프로그램 디버깅 학습 황제낙엽 2026.06.25 172
81 Gradle 프로젝트의 Buildship 캐시 삭제 방법 황제낙엽 2025.11.21 344
80 프로젝트 Source 폴더에 지정한 서블릿이 웹서비스에서 인식하지 않는 문제 황제낙엽 2025.01.04 740
79 [phind/Buildship Gradle Integration 3.0] Preferences / Gradle / Gradle distribution 에 대한 설명 황제낙엽 2024.11.11 731
78 STS (Eclipse)에서 Language Server 동작 비활성화 하기 file 황제낙엽 2023.12.28 2003
77 eclipse 에서 build.gradle 수정시 프로젝트에 자동 반영 황제낙엽 2023.12.28 768
76 IntelliJ 의 ultimate(상용) 와 community(무료) 버전의 차이 file 황제낙엽 2023.11.01 2201
75 eclipse tomcat 에 ssl 적용 황제낙엽 2023.09.10 732
74 localhost 는 접속 가능한데 도메인으로는 접속이 불가 황제낙엽 2023.08.13 681
73 remote desktop 에서 vscode 로 작업시 키입력이 되지 않을때 (from bing) 황제낙엽 2023.07.25 1767
72 Eclipse, Gradle 프로젝트 생성, Dynamic Web Project 로 변경 황제낙엽 2023.07.12 888
71 로컬 작업 중 모바일로 페이지 확인하는 방법 live server host file 황제낙엽 2023.05.23 720
70 유용한 단축키 모음 - 개발을 누구보다 빠르게 황제낙엽 2023.02.25 616
69 vector 이미지 만들기 황제낙엽 2022.12.22 598
68 자동 import 설정 file 황제낙엽 2022.12.22 652
67 [안드로이드 스튜디오] 자주 쓰는 단축키 20개 황제낙엽 2022.11.11 622
66 Android Studio GitHub 공유하기 및 사용하기 황제낙엽 2022.11.02 552
65 코드 포맷터 (Extension Prettier - Code formatter) file 황제낙엽 2021.01.16 699
64 디버깅 관련 (SourceMap, Debugger for Chrome, Node.js) 황제낙엽 2020.08.18 643
63 vscode에서 기본 디버깅과 프로세스 디버깅 file 황제낙엽 2020.08.16 803