Intellij 코드 생산성 높이기- Postfix Completion

겔로그·2022년 12월 25일
0

기타

목록 보기
10/12
post-thumbnail

개요

오늘은 코드 생산성 높이기 2번째 글을 공유드립니다. 코드 생산성을 높이기 위해 IDE에서 제공하는 기능들을 확인하는 과정에서 Postfix Completion이라는 굉장한 기능을 찾게 되었습니다.

오늘은 해당 기능에 대한 설명과 사용법에 대해 공유할 예정입니다.

Postfix Completion이란?

IDE에서 언어별로 사용할 수 있는 단축키 모음이라 생각하면 쉽게 이해하실 수 있습니다.

갑통알을 쓰면 IDE에서 갑자기 통장을 보니 알바(아르바이트)를 해야겠다라고 풀어 써주는 기능이라고 이해해주시면 좋을 것 같습니다.

저는 이 중 제가 사용해본 몇몇 postfix를 소개해드릴 예정이며 전체 postfix를 알고싶으신 분들은 Intellij에 들어가 아래 단축키를 사용해 확인해보시길 바랍니다.

Postfix Completion 제공 목록 확인

command(⌘) + , => postfix completion 검색

Postfix Completion 대표 예시

1. nn, null

Before

public class Foo {
    void m(Object o) {
        o.nn
    }
}

public class Foo {
    void m(Object o) {
        o.null
    }
}

After

public class Foo {
    void m(Object o) {
        if (o != null){

        }
    }
}

public class Foo {
    void m(Object o) {
        if (o == null){

        }
    }
}

2. sout, souf, serr, soutv

Before

public class Foo {
  void m(boolean b) {
    b.sout
    b.souf
    b.serr
    b.soutv // 변수 추가
  }
}

After

public class Foo {
  void m(boolean b) {
      System.out.println(b);
      System.out.printf("", b);
      System.err.println(b);
      System.out.println("b = " + b);
  }
}

3. for, fori, forr

Before

public class Foo {
    void m() {
        int[] values = {1, 2, 3};
        values.for // iterable
        
        int foo = 100;
        foo.fori // index increase
        foo.forr // index decrease
    }
}

After

public class Foo {
    void m() {
        int[] values = {1, 2, 3};
        for (int value : values) {

        }
        
        int foo = 100;
        for (int i = 0; i < foo; i++) {

        }
        for (int i = foo; i > 0; i--) {

        }
    }
}

4. try

Before

public void m2() {
  m().try
}

public void m() throws CheckedException { }

After

public void m2() {
  try {
    m();
  } catch(CheckedException e) {
    e.printStackTrace();
  }
}

public void m() throws CheckedException { }

5. twr

Before

public class Foo {
    void m() {
        getStream().twr
    }

    AutoCloseable getStream()
    {
        return null;
    }
}

After


public class Foo {
    void m() {
        try (AutoCloseable stream = getStream()) {

        } catch (Exception e) {
        }
    }

    AutoCloseable getStream()
    {
        return null;
    }
}

6. val, var, varl

Before

public class Foo {
    void m(Object o) {
    	String.valueOf(123).val
        o instanceof String.var
        String.valueOf(123).varl
    }
}

After

public class Foo {
    void m(Object o) {
    	lombok.val foo = String.valueOf(123);
        boolean foo = o instanceof String;
        lombok.var foo = String.valueOf(123);
    }
}

7. opt

Before

public void m(int intValue, double doubleValue, long longValue, Object objValue) {
  intValue.opt
  doubleValue.opt
  longValue.opt
  objValue.opt
}

After

public void m(int intValue, double doubleValue, long longValue, Object objValue) {
  OptionalInt.of(intValue)
  OptionalDouble.of(doubleValue)
  OptionalLong.of(longValue)
  Optional.ofNullable(objValue)
}

7. cast, castvar

Before

public class Foo {
    void m(Object o) {
        o.cast // cast
        
        if (o instanceof String) {
        	o.castvar //castvar
    	}
    }
}

After

public class Foo {
    void m(Object o) {
        (() o)
        
        if (o instanceof String) {
        	String o = (String)o;
    	}    
    }
}

결론

Postfix Completion에 자주 쓰는 코드들을 custom 하게 추가하면 유용하게 이용할 수 있을 것 같지만 아직 그렇게까지는 써본적이 없어 추천드리지는 못하겠습니다.

하지만 기본적으로 Intellij에서 제공하는 postfix를 이용하면 좀 더 생산성 있는 코드를 작성하는데 도움이 많이 될 것 같습니다.

해당 기능을 한 번 이용해 보시는걸 추천드립니다.

감사합니다.

profile
Gelog 나쁜 것만 드려요~

0개의 댓글