1. Kotlinのコーディングスタイル
Kotlinにはオフィシャルなコーディングスタイルがあります。
基本的にはこのコーディングスタイルに従ってコーディングするのがいいでしょう。
2. ソースコード
まずは、ディレクトリやソースコードなどの構成のスタイルからです。
2-1. ディレクトリ構成
2-1. 複数の言語で混在するプロジェクトの場合
(Javaなどの他の言語と)ソースルートが同じにして、同じディレクトリ構造になるようにする
2-2. Kotlinだけのプロジェクトの場合
共通部分を除外したパッケージ構造と同じディレクトリ構造にする
(com.exampleがすべてのパッケージに共通する場合、com.exampleは除外したディレクトリ構造にする)
パッケージがcom.example.foo.barの場合、ソースコードは${source root}/foo/barに配置する
2-2. ソースファイル名
大文字から始まるキャメルケースで最後に.ktをつけます。
ソースファイルに一つのクラスが含まれる場合、そのクラスと同じ名前にします。
複数のクラスやトップレベルしかない場合は、内容を表す名前をつけます。
2-3. ソースファイル構成
同じソースファイルには、十分に意味的な関連のあるクラスやトップレベル要素を含めるようにします。
また、一つのソースファイルのサイズは数百行程度に収まるようにします。
クラスのエクステンションを定義スル場合、
そのエクステンションがそのクラスを利用するすべてのコードが必要とする場合にはもともとのクラスが記述されているソースファイルに、
そうでなくて特定のコードにのみ必要な場合は、利用するコードのあるソースファイルに記述します。
エクステンションように新しくソースファイルを作成することはしません。
2-4. クラスの構成
クラスを構成は以下のような順番で記述する
- プロパティとイニシャライザ
- セカンダリイニシャライ
- メソッド(関連するものをまとめる。アルファペット順やヴィジビリティ順にしない)
- コンパニオンオブジェクト?
2-5. インターフェース実装
インターフェースを実装する場合、インターフェースで記述されている通りの順番で各メンバーを実装していく
2-6. オーバーロード実装
オーバーロードは必ず、まとめて記述する
3. ネーミングルール
基本的にはJavaのネーミングルールを踏襲する。
3-1. パッケージ名
常に小文字でアンダースコアを利用しない
3-2. クラス・オブジェクト名
大文字から始まりキャメルケースで連結する
3-3. 関数・ローカル変数名
小文字から始まりキャメルケースで連結する
例外として、インスタンスを生成するファクトリ関数は、生成するインスタンスのクラスと同じ名前にする
3-4. テスト名
テスト名には以下の2つのタイプがあります。
- バッククォートで囲んだ空白を含む文字列
- アンダースコアを含む文字列
3-5. プロパティ名
- 定数(constのついたプロパティ, valのトップレベルオブジェクト): すべて大文字でスネークケースで連結する
- 通常のプロパティ: 小文字から始まるキャメルケースで連結
- シングルトン: 大文字から始まるキャメルケースで連結
- enum: すべて大文字でスネークケースで連結 or 大文字から初めてキャメルケースで連結
3-6. 名前の付け方
- クラス: そのクラスを表す名詞か名詞句とする
- メソッド: そのメソッドの動きを表す動詞か動詞句とする
- 頭文字: 2文字の場合は大文字、それより多い場合は最初のみを大文字にする
4. フォーマット
基本的にはJavaのフォーマットを踏襲する。
4-1. インデント
インデントはスペース4文字分のスペースを使い、タブは使わない
4-2. 中括弧 {}
{ は改行せず、行末におく
4-3. スペース
- レンジを除く2項演算子の前後にはスペースを入れる
- 制御文(if, when, for, while)のあとにはスペースを入れる
- ([ の後、])の前にはスペースを入れない
- // のあとにはスペースを入れる
- 水平方向への整列をしない。
4-4. コロン
型やスーパークラスを区切る場合にはコロンの前にスペースを入れる