43
37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Kotlin コード規約( Naming rules )

Last updated at Posted at 2018-01-18

公式の和訳(意訳)です.

命名規則

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).

43
37
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
43
37

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?