IDE & Apps/IntelliJ Idea

깃털보다 가벼운 인텔리J 아이디어(IntelliJ Idea) 팁 11 - Method Extract

Figo Kim 2016. 6. 16. 17:53
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

참으로 오래간만입니다.

그 동안 무진장 바빠서 포스팅을 못했던건 아니었고, 

사실 그냥 귀찮았었습니다. ㅎㅎ


오늘은 IntelliJ Idea에서 제공하는 기능 중 Method Extract기능에 대해서 알아보도록 하겠습니다.

이 기능 역시 Refactoring기능 중 하나로서 어쩌면 상당히 유용하다고 볼 수 있는 기능입니다.


사용방법을 개략적으로 정리하자면, 아래와 같습니다.

1. 추출한 대상이 되는 코드 부분을 드래그로 선택

2. Refactor > Extract > Method 메뉴를 선택하거나 또는 마우스 오른쪽 context 메뉴를 통해서 선택

3. 옵션창에서 생성될 메소드의 접근 제한자 및 이름을 지정, 그리고 필요시 추가 옵션 선택


우선 기본적인 방법을 알아보도록 하겠습니다.


아래와 같이 기본 코드가 있다고 가정합니다.


추출한 코드 부분을 선택합니다.


선택 후, Refactor > Extract > Method를 선택합니다.


접근제한자(Visibility) 및 이름을 지정합니다.

- Declare static : static 메소드를 생성합니다.

- Fold parameters : 설명이 참 애매하므로 나중에 예제로 설명하겠습니다.

아래 그림과 같이 메소드명 및 접근제한자 설정 하고, 전달되는 파라미터값 확인 후, OK버튼을 누릅니다.


아래와 같이 인텔리J에서 Input과 Output을 분석해서 독립적인 메소드를 추출해줍니다.


앞서 생략했던 Fold Parameters 옵션을 선택해보록 하겠습니다.

동일한 소스 기준으로 봤을 때, 추출되는 메소드로 전달되는 파라미터가 조금 다른것을 확인하실 수 있습니다.


추출된 결과는 아래와 같습니다.

Fold Parameters를 쉽게 정리해보다면, Intellij에서 묶을 수 있거나 계산이 가능한 파라미터를 직접 고려해서 파라미터를 생성 및 전달한다고 이해하는게 쉬울 듯 싶습니다.



두번째 케이스입니다.


Loop 및 output이 되는 ArrayList 부분을 선택했습니다.



보시는바와 같이 getList라는 메소드를 만들고, 그 리턴값을 list 변수에 할당하고 있습니다.



만약에 Declare varrags를 선택하면 어떻게 될까요?

varargs는 생성되는 메소드에 가변인자로 전달하겠다는 옵션으로 전달되는 파라미터가 배열일 경우, 나타나는 옵션입니다.


가변인자 옵션을 선택하고 추출을 하게 되면 아래와 같이 추출되는 메소드에 String... stringArrays와 같이 가변인자로 전달됩니다.



Method Extract기능 사용시 주의사항으로는 아래와 같습니다.

- output의 하나 이상일 경우 사용할 수 없음.

- return값이 조건에 따라서 변경되는 케이스의 경우 사용할 수 없음.