Monday, November 13, 2017

Kotlin - Getting Started(Coding Conventions)

이번엔 코딩컨벤션에 관해 적어보려고 한다. (이번부터는 code highlight를 바꿔봤다.)

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