公式の和訳(意訳)です.
命名規則
Kotlin の命名規約はシンプルだ。
パッケージ名は常に小文字で,アンダースコアを使用しない(org.example.myproject
).
一般に,複数の単語を使うことは非推奨である.
しかし,どうしても複数の単語を使う必要がある場合,単に複数の単語をつないでもよいし、それらの単語をキャメルケースでつないでもよい(org.example.myProject
).
クラスとオブジェクトの名前は大文字から始まるキャメルケースを用いる.
open class DeclarationProcessor { ... }
object EmptyDeclarationProcessor : DeclarationProcessor { ... }
関数名
関数,プロパティ,ローカル変数の名前は小文字から始まるキャメルケースを用いる.
アンダースコアは使用しない.
fun processDeclarations() { ... }
var declarationCount = ...
例外:クラスのインスタンスを作成するためのファクトリ関数は生成するクラスと同じ名前を用いてもよい.
abstract class Foo { ... }
class FooImpl : Foo { ... }
fun Foo(): Foo { return FooImpl(...) }
テストに用いるメソッドの名前
テストでは(テストの中だけでは),バックスティックで囲んだ空白を含むメソッド名を使ってもよい.
(そのようなメソッド名は現在Androidランタイムではサポートされていないことに留意されたい).
また,アンダースコアを含む名前も使ってもよい.
class MyTestCase {
@Test fun `ensure everything works`() {
}
@Test fun ensureEverythinsWorks_onAndroid() {
}
}
プロパティ名
定数(const
を付したプロパティや,保持しているプロパティも含めて完全に不変なデータを保持しカスタムゲッターを用いないトップレベル宣言またはオブジェクトのval
プロパティ)の名前はアンダースコアで区切った大文字の名前を用いる.
const val MAX_COUNT = 8
val USER_NAME_FIXED = "UserName"
振る舞いを持っていたり可変なデータを保持するトップレベル宣言またはオブジェクトのプロパティの名前は普通のキャメルケースを用いる.
val mutableCollection: MutableSet<String> = HashSet()
シングルトンオブジェクトの参照を保持するプロパティにはobject
宣言をしたものと同様の名前を用いる.
val PersonComparator: Comparator<Person> = ...
enum 定数に対しては大文字をアンダースコアで区切った名前(enum class Color { RED, GREEN }
)を使ってもよいし,大文字から始まるキャメルケースの名前を使ってもよい.
使用用途によって使い分ける.
バッキングプロパティの名前
概念的には同一だが,片方は public API で,もう片方はその詳細な実装であるような2つのプロパティがクラス内にあるとき, private なプロパティの名前は先頭にアンダースコアをつける.
class C {
private val _elementList = mutableListOf<Element>()
val elementList: List<Element>
get() = _elementList
}
いい名前をつける
クラス名はそのクラスが_何であるか_を説明する名詞または名詞句にする.
たとえば, List
PersonReader
など.
メソッド名はそのメソッドが_何をするか_を言い表す動詞または動詞句にする.
たとえば,close
readPersons
など.
その名前はメソッドがオブジェクトを変更するのか新しいオブジェクトを返すのか示すようなものにすべきである.
たとえば,sort
はコレクションを変更してソートするのに対し,sorted
はソート済みのコレクションのコピーを返す.
名前は目的が何であるか明確になるようつける.
名前に意味のない単語(Manager
,Wrapper
など)を使用しないようにする.
名前の一部に略語を使う場合,その略語が2文字のときはそれらを大文字にする(IOStream
).
略語が長いときは最初の文字を大文字にする(HttpInputStream
).