Save Actions
Save Actions는 이클립스에서 파일을 저장할 때 추가로 처리할 동작을 설정할 수 있는 기능이다. 여기서는 자바 에디터의 save actions 사용에 대해 정리해보자.
주의할 점은 작성한 코드에 대한 임의적인 변경이 이뤄지기 때문에 호불호가 있다.!!
Windows > Preferences > Java > Editor > Save Actions를 통해 메뉴에 진입해보자.
기본 메뉴
- Save Actions를 동작시키려면 Perform the selected actions on save에 대한 체크가 필요하다.
- 미리 설정된 formatter에 의해 소스 코드의 포멧을 수정하려면 format source code를 체크한다.
- 불필요한 inport 문장을 제거하고 개별 클래스 import 형태로 수정하려면 Organize imports를 체크한다.
- 추가적인 설정을 위해서는 Additional actions를 체크한다.
Additional actions
Additional actions에서는 추가적인 동작을 정의할 수 있다. 대부분 불필요한 내용에 대한 삭제, 정렬, 수정을 다루기 때문에 하나씩 탭을 살펴보고 본인이 필요하다고 생각하는 기능을 설정하면 된다.
기본 사용 방법은 설정 창에서 기능을 선택한 후 우측의 Preview에서 설정 내용을 확인하고 맘에 들면 적용시키면 된다. 예를 들어 Code Organizing 탭을 살펴보자.
Members에 Sort Members 설정이 있는데 멤버들을 정렬 할 것인가, 하지 않을 것인가에 대한 설정이다. 체크했을 때와 하지 않았을 때의 결과를 Preview에서 보고 결정하면 된다.
|
|
Sort Members 적용 시 |
Sort Members 미 적용 시 |
Code Style 탭
- Control Statements
- Use blocks in if/while/for/do statement: 제거문의 실행 블럭 작성 시 {} 를 강제 삽입 할것인지 설정한다.
- Convert for loops to enhanced: index를 기반으로 하는 for 문장을 for each 문장으로 변경할 지 설정한다.
- Expressions
- Use parenthness in expressions: 표현식을 쓸 때 소괄호로 묶을 것인지 설정한다.
- Use lazy logical operator: 논리 연산자를 short circuit 형태로 변경한다.
- Number Literals
- Use uppercase for long literal suffix: long 형의 접미사를 대문자 L 로 수정한다.
- Variable declarations
- Use modifier 'final' where possible: 가능한 곳(수정하지 않고 참조만 하는 변수들)에 final 제한자를 추가한다.
- Use local variable type interface(Java 10 or higher): 변수 선언을 local variable type 일 var로 수정한다.(java 10의 추가 기능)
- Functional interface instances
- Convert functional interface instances: 함수형 인터페이스에 대한 객체 사용 부분을 lambda 식 또는 anonymous class 형태로 변경한다.
- Simplify lambda expression and method reference syntax: 가능한 람다 표현식을 간단히 처리하고 메서드 참조 형태로 코드를 변경한다.
Member Accesses
- Non static accesses
- Use 'this' qualifier for field accesses: instance member 변수 즉 field에 접근할 때 this를 사용한다.
- Use 'this' qualifier for method accesses: 메서드에 접근할 때 this를 사용한다.
- Static Accesses
- Use declaring class as qualifier: static 요소에 접근할 때 클래스 이름 사용에 대해 설정한다.
Missing Code
- Annotations
- Add missing Annotations: 사용하지 않은 annotation을 자동으로 추가한다.
Unnessary Code
- Unused code
- Remove unused imports: 사용하지 않는 import 문장을 제거한다.
- Remove unused private members: private member 중 사용하지 않는 코드들을 제거한다.
- Remove unused local variables: 사용하지 않는 local 변수들을 제거한다.
- Unnessary code
- Remove unnessary casts: 불필요한 형변환 처리를 제거한다.
- Remove unnessary '$NON-NLS$' tags: 불필요한 $NON-NLS$ 태그(I18N 설정 과 관련된 태그) 를 제거한다.
- Remove redundant type arguments(1.7 or higher): 불필요한 타입 파라미터 설정을 제거한다.(강추)
- Use Autoboxing(1.5 or higher): Autoboxing 형태의 코드로 변환한다.
- Use Unboxing(1.5 or higher): Unboxing 형태의 코드도 변환한다.
- Push down negation: 부정 연산자(!)를 가급적 지양한다.
- Merge conditions of if/else if/else that have the same block: if/else 문장에서 처리 내용이 동일한 경우 합친다.
- Operate on Maps directly: Map을 사용할 때 key를 통하지 않고 직접 사용하는 형태로 변경한다.
- Remove redundant modifiers: 인터페이스 메서드의 public abstract 처럼 중복된(불필요한) 제한자를 제거한다.
- Remove redundant semicolons: 중복된 세미콜론을 제거한다.
- Remove unnessary array creation(1.5 or higher): 불필요한 배열 생성 코드를 제거한다.