인터넷에 검색하면 이미 많은 정보를 찾을 수 있지만 제가 IntelliJ를 사용하면서 생산성을 많이 높여 주었다고 생각하는 단축키와 라이브 템플릿 몇 가지를 소개합니다.
macOS 기준으로 작성하였는데 윈도우에서는 설정 > Keymap
에 들어가서 검색보면 단축키를 확인 할 수 있다.
변수로 한 번에 빼낼 수 있다.
파라미터로 빼낼 수 있다.
변수를 인라인으로 리팩토링
현재 구문을 완성시킨다. ;
이나 괄호 등을 자동으로 만들어 구문을 완성시켜 준다.
사용된 테스트로 바로 이동이 가능하다.
복사했던 기록을 선택하여 다시 붙여넣기를 할 수 있다.
한 번에 수정할 때 편리하다.
public static void main(String[] args) {
// soutm - 클래스와 메소드 이름 출력
System.out.println("Test.main");
// soutp - 파라미터 이름과 값 출력
System.out.println("args = " + Arrays.toString(args));
String name = "name";
// soutv - 변수 이름 값 출력
System.out.println("name = " + name);
// sout
System.out.println();
// iter
for (String arg : args) {
}
// itar
for (int i = 0; i < args.length; i++) {
String arg = args[i];
}
}
내가 커스텀한 라이브 템플릿을 구분하기 위해 따로 그룹을 만들어서 관리하고 있다.
System.out
대신 로거를 사용하기 때문에 조금 수정하여 템플릿을 추가 했다.
private void test(String str1, int int1) {
// ldmp - 메소드명과 파라미터를 디버그 로그로
log.debug("test - str1 = {}, int1 = {}", str1, int1);
String name = "name";
// ldv - 변수를 디버그 로그로
log.debug("name = {}", name);
// ld
log.debug();
}
log.debug
줄여 ld
로 표시했고 mp
나 v
처럼 로그에 남길 값을 뒤에 추가하는 형식으로 만들었다.
log.info
나 log.warn
, log.error
도 li
, lw
, le
처럼 만들었다.
log.debug($END$);
log.debug("$EXPR_COPY$ = {}", $EXPR$);
name | Expression | Default value | Skip if defined |
---|---|---|---|
EXPR | variableOfType("") | "expr" | |
EXPR_COPY | escapeString(EXPR) | V |
log.debug($FORMAT$);
name | Expression | Default value | Skip if defined |
---|---|---|---|
FORMAT | 아래 참고 | V |
groovyScript("'\"' + _1 + (_2.isEmpty() ? '' : ' - ' + _2.collect{it + ' = {}'}.join(', ')) + '\"' + (_2.isEmpty() ? '' : ', ' + _2.collect{it}.join(', ')) ", methodName(), methodParameters())
기능 개발보다 테스트 코드를 작성하는데에 더 많은 시간을 소비하는 개발자들이 많을 거다.
@Nested
@DisplayName("$DpName$")
class $ClassName$ {
$END$
}
name | Expression | Default value | Skip if defined |
---|---|---|---|
DpName | |||
ClassName | 아래 참고 | test | V |
regularExpression(regularExpression(DpName, "[\\(+\\)+\\[+\\]+\\:+]", ""), "((\\s)*(,+|\\s+|-+|_+|\\.+)(\\s)*)+", "_")
(정규식을 더 간단히 만들 수 있을 거 같은데 익숙지 않아서 패스...)
@Test
@DisplayName("$DpName$")
void $MethodName$() {
// given
$END$
// when
// then
}
name | Expression | Default value | Skip if defined |
---|---|---|---|
DpName | |||
MethodName | nestedc 의 ClassName 의 Expression 과 동일 | test | V |
@ParameterizedTest
@DisplayName("$DpName$")
@$Source$
void $MethodName$($Argument$) {
// given
$END$
// when
// then
}
name | Expression | Default value | Skip if defined |
---|---|---|---|
DpName | |||
Source | |||
MethodName | nestedc 의 ClassName 의 Expression 과 동일 | test | V |
Argument |