본문 바로가기
🍃 Language/Kotiln

[Kotlin] Intellij에서 코틀린 코딩컨벤션 Kotlin Style Guide 적용하기

by 카프리썬 2022. 1. 29.
728x90

코틀린 코딩 컨벤션 (Kotiln Coding Convention)

 사실 코틀린은 공식 페이지에서 코딩컨벤션을 제안하고 있다.

특히 기본적으로 코틀린 스타일 가이드를 적용하라고 시작하는데 그걸 인텔리제이에 적용해볼 것이다. 

https://kotlinlang.org/docs/coding-conventions.html#naming-rules

 

Coding conventions | Kotlin

 

kotlinlang.org

반응형

 

스타일 가이드 적용 

내가 쓰고 있는 IDE인 Intellj에서는 코드포맷을 맞출수 있는 기능이 있다. 

Preferences(단축키 : cmd + , ) > Editor > Coding Style > Kotlin > 오른쪽 상단에 Set form.. > Kotlin Style Guide 선택 

그럼 알아서 코딩 컨벤션 스타일이 변경된다. 

사실 알아서라기보단 reformat을 적용해야하는건데,

나같은 경우는 계속 적용이 안되는것 같아서 직접 keymap(단축키)를 지정해줬다.

이제 이거다!! cmd + ^ + .   이 단축키를 누르면 자동으로 컨벤션이 적용된다.

그럼 예를 들어 스크립트에 val a=1 이렇게 되어 있으면 val a = 1 이런식으로 (띄어쓰기가 달라졌쥬?) 자동으로 이 틀이 맞춰진다. 

참고로 이건 꿀팁인데 현재 코드에 스타일 가이드가 어긋난 부분이 있으면 따로 마크해주는 기능이 있다. 

Preferences(단축키 : cmd + , ) > Editor > Inspections > Kotiln > Style Issues 펼치기

> File is not formatted according to project settings 체크선택 > 왼쪽에 serverity에서 원하는 경고레벨로 설정 

이제 코딩컨벤션을 좀 잘 지켜야하니까 나는 좀 높은 경고레벨로 선택했다. 

그러면 코드를 작성하면서 에디터에서 경고를 띄워준다. 이제 이렇게 되면 컨벤션은 무조건 지키겟다! 후후 

참고로, 경고를 구분하기 위해서 커스텀 serverity를 만들었다. 이제 나는 코딩컨벤션에 어긋나면 파란밑줄이 나온다! 

 

728x90

 

이 외에도 코틀린 공식문서에서 지정해둔 코딩 컨벤션 내용이 있다.  기본적인 몇가지만 기록해봤다. 

  • 소스코드 파일은 어디에 저장하는가? 기본패키지 밑에 있어야한다. 
  • 소스코드 파일 이름은 어떻게 정하는가? 클래스이름과 파일이름이 같아야한다. 
  • 소스파일의 구조는 어떻게 잡는가? 밀접하게 관련이 있는것들끼리 같은 파일로 잡는다.
  • 클래스 구조는 어떻게 정의하는가?  속성선언>초기화블록 > 부생성자>메소드>컴패니언 객체 순으로 선언한다. 
  • 인터페이스는 어떻게 구현하는가? 인터페이스에 선언된 순서대로 클래스에서 구현한다. 
  • 네이밍 방식은?
    • 패키지이름은 _를 사용하지 않은 알파벳 소문자
    • 클래스, 전역객체 , 함수, 메소드, 변수이름은 첫자리가 대문자인 camlCase방식으로
    • 불변하는 속성(val 선언변수값)은 _를 사용한 알파벳 대문자
  • 함수구조는?
    • 표준스타일에선 함수인자가 120자를 넘어가면 멀티라인
    • retun만 할경우 return 지시어를 생략한 단일함수를 선호한다. (fun foo() = 1 // good)

 

참고

https://medium.com/mj-studio/%EC%BD%94%ED%8B%80%EB%A6%B0-%EC%9D%B4%EB%A0%87%EA%B2%8C-%EC%9E%91%EC%84%B1%ED%95%98%EC%8B%9C%EB%A9%B4-%EB%90%A9%EB%8B%88%EB%8B%A4-94871a1fa646

반응형

$(document).ready(function() { var $toc = $("#toc"); $toc.toc({content: ".tt_article_useless_p_margin", headings: "h2,h3,h4"}); });