기술지원 문의는 로그인 후에 가능합니다.

확인

소식

JetBrains 관련 소식

공지사항

IntelliJ IDEA에서 일상적인 리팩토링을 즐기기_2편

2020-09-28


안녕하세요 JetBrains 한국 총판 단군소프트입니다.
지난 포스팅에 이어 IntelliJ IDEA가 제공하는 일상적인 리팩토링을 마저 알려드리겠습니다.
-상수 삽입
-필드 삽입
-매개변수 추출
-변수 삽입
-안전하게 삭제


상수 삽입

코드베이스에서 리터럴 값보다 상수를 사용하는 것이 항상 권장되므로 코드를 리팩토링하여 상수를 삽입하는 방법을 살펴보겠습니다.



beautifulBinaryStrings 메소드는 문자열 리터럴 값을 사용합니다. macOS에서는 단축키 ⌥⌘C, Windows/Linux에서는 Ctrl+Alt+C를 사용하여 이 값을 상수로 추출할 수 있습니다.IntelliJ IDEA는 리터럴 값을 기반으로 상수 이름을 제안합니다. 첫 번째 권장 사항을 선택하면 필요한 경우 이 상수를 다른 클래스로 이동할 수도 있습니다.




필드 삽입

이 리팩토링으로 필드를 삽입 또는 추출하고 초기화할 수 있습니다. ViewImpl 클래스의 getItemsList 메소드는 상수 0과 4를 사용하여 목록의 하위 집합을 가져옵니다.


이를 상수로 정의하는 대신 macOS에서 ⌥⌘F, Windows/Linux에서 Ctrl+Alt+F를 사용하여 이러한 값을 저장하는 필드를 삽입하여 인스턴스 간에 서로 다른 값을 갖도록 할 수 있습니다.




매개변수 추출

매개변수 추출 리팩토링을 사용하면 메소드에서 상수 또는 표현식을 선택하고 이를 메소드에 인수로 전달되도록 정의할 수 있습니다.



toIndex라는 getItemsList 메소드에 두 번째 필드도 삽입한 예시입니다.


getItemsList 메소드에서 List.of(1,2,3,4,5) 표현식을 이 메소드에 대한 인수로 전달할 수 있습니다. 메소드 매개변수의 유형은 선택한 표현식의 유형과 동일합니다.



Delegate via method overloading(오버로드 메소드를 통한 위임) 확인란을 선택하여 원래 메소드를 유지하고 두 번째 메소드를 삽입할 수도 있습니다. 이는 호출자에 따라 두 메소드 중 하나를 사용할 수 있음을 의미합니다.



매개변수 추출은 표현식을 가장 논리적인 위치로 이동하여 메소드 또는 메소드 호출을 더 읽기 쉽게 만드는 데 도움을 줍니다. 이해하기 쉬운 매개변수 이름을 사용하는 것도 가독성에 도움을 줍니다.


변수 삽입

필요한 경우 변수를 추출할 수도 있고 표현식을 적절하게 이름이 지정된 변수로 이동하여 코드를 더 읽기 쉽게 만들 수 있습니다.



ContextActionsWithAltEnter 생성자의 if 문은 약간 복잡해 보입니다. 표현식을 선택하고 macOS에서 ⌥⌘V, Windows/Linux에서 Ctrl+Alt+V 단축키를 입력합니다. lowerLimit과 같이 유용한 이름을 지정하세요. 두 번째 조건을 변수로 추출하고 이름을 upperLimit 으로 지정할 수도 있습니다. 필요한 경우 추출된 변수를 final로, Java 10 이상을 사용하는 경우 var로 정의할 수 있습니다.



안전하게 삭제

프로젝트에서 파일이나 심볼을 더 이상 사용하지 않으려면 안전하게 삭제해야 합니다. 삭제할 파일 또는 클래스를 선택하고 macOS에서 ⌘⌦, 또는 Windows/Linux에서 Alt+Delete를 사용하세요. IntelliJ IDEA는 삭제하기 전에 리소스를 삭제해도 안전한지 확인합니다.



​포스팅에 사용된 코드는 여기서 확인할 수 있습니다. IntelliJ IDEA에서의 일상적 리팩토링에 대한 영상을 보시려면 아래를 클릭해 주세요!


​리팩토링은 만능 해결사가 아닙니다.
리팩토링으로 인해 코드의 동작이 달라지지 않도록 테스트에 안전망을 준비해 두세요.
다른 궁금한 사항이 있으시면 단군소프트(JetBrains@tangusnsoft.com)로 연락주세요.
긴 글 읽어주셔어 감사합니다.

목록