역설적이긴 하지만, 때로는 개발자의 생산성을 향상시키는 것이 ‘게으름’이라고 생각한다. 나는 귀찮은 걸 하기 싫어해서 뭔가 실용적인 코드를 만들어내는 개발자를 굉장히 사랑하는 편이다. 그런 개발자가 되기 위해서 궁리하다가 어찌저찌 안드로이드 스튜디오의 Live Templates를 알게 되었다.


Live Templates

라이브 템플릿, 직역하자면 살아있는 형판(템플릿)과 같은 구린 뜻이 되어버린다. 기능 상으로 설명하자면, 특정 Abbreviation(축약형) 값을 입력하면 자주 쓰는 코드 구성을 불러오는 기능이다. 쉽게 말해 상용구. 안드로이드 스튜디오에서 기본적으로 제공하는 라이브 템플릿 중에서도 유용한 것들이 꽤 많다. 물론 사용자 커스텀도 가능하다.

예시로, 안드로이드 스튜디오를 켜고 Log 사용이 가능한 아무 곳에서 wtf를 입력하고 엔터를 쳐보자. 이런 라인이 자동 완성될 것이다.

Log.wtf(TAG, String, Exception)


로그 이름이 왓더뻑이라니…(커스텀 아님) 너무 귀여워서 기억에서 지워지지 않는다! 사실 이걸 모두에게 알려줘야지 하고 이 포스트 쓴 건 비밀.

안드로이드 스튜디오의 환경설정(Preferences) -> Editor -> Live Templates 에 가면 템플릿을 보거나 만들 수 있다. 우리 귀여운 wtf 템플릿은 AndroidLog 에 정의되어 있었다.


이외에도 JetBrains의 Live Templates 문서에 자주 쓰일 만한 라이브 템플릿들이 소개되어 있다.

Abbreviation Expands to
psfs public static final String
sout System.out.println();
fori for (int i = 0; i < ; i++) { }

대표적으로 위와 같이 자주 쓰일 법한 코드를 알파벳 몇 글자로 축약해두었다.


Live Template 커스텀

간단한 라이브 템플릿 예제를 직접 만들어보자.

Intent intent = new Intent(------Activity.this, ------Activity.class);
startActivity(intent);

액티비티를 이동해야 하는데, 매번 이 두 줄을 입력하기가 너무너무 귀찮다고 하자. 그래서 ‘isa’ 라는 축약어를 입력하면 위 두 줄이 자동 생성되도록 만들고 싶다. 추가로 현재 액티비티는 자동으로 완성되고, 이동할 두 번째 클래스명만 입력하도록 커스텀 할 수 있다.


조금 전에 보았던 Preferences -> Editor -> Live Templates 창에서 오른쪽 상단의 + 버튼을 눌러 우선 MyCustom 이라는 그룹명을 만들었다. 그리고 다시 눌러서 라이브 템플릿을 추가하고, Abbreviation 과 설명을 입력한다. Template text 코드에는 다음과 같이 입력해준다.

android.content.Intent intent = new Intent($first$.this, $second$.class);
startActivity(intent);


여기서 Intent 대신 android.content.Intent를 입력하면 import를 수동으로 하지 않아도 자동 추가가 된다.

$first$$second$ 는 자유롭게 정할 수 있는 변수명이다. 이 변수에 대한 설정은 Template text 코드 우측의 Edit variables에 있다. 하지만 우선 이 템플릿을 어디에서 호출하여 사용할 것인지 지정해야 한다. 하단 주의사항 ‘No applicable contexts.’ 옆의 Define 에서 Java 전체에 체크해준다.

그 후 Edit variables 화면에 들어가면 필요한 Expression을 불러 사용할 수 있다. first 변수에는 미리 정의되어 있는 함수 목록에서 클래스 이름을 불러오는 className() 메소드를 사용한다. 오른쪽에 있는 ‘Skip if defined’에 체크하면 템플릿을 불러온 후, 커서가 바로 second 변수 쪽으로 이동하도록 설정할 수 있다. (체크하지 않을 경우, Tab키를 누르면 다음 변수로 이동한다.) second 변수에는 직접 다음 액티비티 이름을 적어줄 것이기 때문에 아무 작업 하지 않았다.


이제 OK를 눌러 마무리하자. Intent 호출이 가능한 곳에서 isa 를 입력하고 엔터를 치고, 두 번째 액티비티명을 바로 입력할 수 있다. Fancy!!!


결론

라이브러리를 만든다던가 하는 거창한 작업 없이 간편하게 자주 쓰는 코드를 불러올 수 있고, 커스텀도 자유로워서 조금만 더 파보면 아주 편리한 코딩이 가능할 것 같다!!

게다가 프로젝트에 종속적인 것도 아니고, 심지어 템플릿 공유까지 가능하니 알아 두면 좋을 기능이다.

오늘의 영단어

  1. abbreviation : (~의) 축약형, 축약
  2. applicable : 해당되는

References

  • https://www.jetbrains.com/help/idea/using-live-templates.html