Naming Style
애매하지 않다면, 다음 자바 코딩 규칙을 기본으로 사용한다.
-이름에 camelCase 사용한다.(이름에 밑줄은 넣지 않는다.)
-타입은 대문자로 시작한다.
-메서드와 프로퍼티는 소문자로 시작한다.
-들여쓰기에 공백 4개를 사용한다.
-public 함수는 코틀린 문서에 보이도록 문서화를 한다.
Colon
콜론이 타입과 상위 타입을 구분하면 콜론 전에 공백을 넣고, 콜론이 인스턴스와 타입을 구분하면 공백을 넣지 않는다.
1 2 3 | interface Foo<out T : Any> : Bar { fun foo(a: Int): T } | cs |
Lambdas
람다식에서 중괄호 주변에 공백을 사용하고 파라미터와 몸체를 구분하는 -> 주변에도 공백을 사용한다. 가능하면 람다를 괄호 밖에 전달한다.
1 | list.filter { it > 10 }.map { element -> element * 2 } | cs |
람다가 중첩되지 않고 짧으면 파라미터를 명시적으로 선언하는 대신 it 을 사용한다. 파라미터를 가진 중첩된 람다는 파라미터를 항 상 명시적으로 지정한다.
Class header formatting
인자수가 적은 함수는 한줄로 작성한다.
1 | class Person(id: Int, name: String) | cs |
여러개의 인자수가 있는 경우는 각 줄에 위치하며 각각 들여쓰기를 해야한다.
닫는 괄호는 새 줄에 있어야 하며 상속을 사용한다면 슈퍼클래스 생성자 호출이나 인터페이스의 목록은 괄호와 같은 줄에 위치한다.
1 2 3 4 5 6 7 | class Person( id: Int, name: String, surname: String ) : Human(id, name) { // ... } | cs |
Unit
함수가 Unit을 리턴하면 리턴 타입을 생략한다.
1 2 3 | fun foo() { // ": Unit"은 생략한다. } | cs |
Functions vs Properties
인자 없는 함수와 읽기 전용 프로퍼티는 서로 대신 사용할 수 있다. 비록 의미가 비슷하긴 하지만 몇 가지 규칙에 따라 둘 중 하나를 선택한다. 다음 알고리즘일 때 함수보다 프로퍼티를 선호한다.
-익셉션을 던지지 않는다.
-O(1)의 복잡도를 가진다.
-계산비용이 작다.(또는 처음 실행시 캐시한다.)
-호출과 같은 결과를 리턴한다.
이외에 https://android.github.io/kotlin-guides/style.html에 안드로이드용 코틀린 스타일 가이드라인이 있지만 오늘은 기존 페이지를 대상으로 정리해봤다.
0 개의 댓글:
Post a Comment