1.ネーミングスタイル
型の命名スタイルがわからない場合は、Java 命名スタイルを使用できます。
- 名前にはキャメルケースを使用します (アンダースコアは使用しないでください)
- タイプは大文字で始まります
- メソッドとプロパティは小文字で始まります
- スペース4つでインデント
- パブリック関数にはドキュメントが必要です
2.コロン
型とスーパークラスの間のコロンの前にはスペースが必要ですが、型のインスタンスと型の間のコロンの前にスペースは必要ありません。
interface Foo<out T : Any> : Bar {
fun foo(a: Int): T
}
3. ラムダ式
ラムダ式では、中括弧と矢印の周囲にスペースが必要であり、また、ラムダは可能な限り括弧の外側にある必要があります。
list.filter { it > 10 }.map { element -> element * 2 }
ラムダ式は短く、入れ子にしないでください。パラメータを明示的に宣言する代わりにこれを使用することをお勧めします。入れ子になったラムダ式では、パラメータを明示的に宣言する必要があります。
4. クラスヘッダーの形式
クラスにパラメータが少数しかない場合、クラスは 1 行で記述できます。
class Person(id: Int, name: String)
クラスに複数のパラメータがある場合、これらのパラメータは新しい行に表示されてインデントされ、このクラスの ) も新しい行で始まる必要があります。このクラスが別のクラスから継承する場合、またはインターフェイスを実装する場合、その親のパラメータはクラスは 1 行に記述する必要があります。
class Person(
id: Int,
name: String,
surname: String
) : Human(id, name) {
// ...
}
クラスの継承とインターフェースの実装を同時に行う場合は、親クラスを前に、インターフェースを後ろに記述します。
class Person(
id: Int,
name: String,
surname: String
) : Human(id, name),
KotlinMaker {
// ...
}
さらに、コンストラクター内のパラメーターを二重インデント、つまり 8 つのスペースでインデントすることもできます。
5.ユニット
関数が Unit を返す場合、戻り値の型は省略する必要があります。
fun foo() {
...
}
6. 関数およびプロパティの優先使用規則
場合によっては、関数と読み取り専用プロパティは交換可能です。これらのセマンティクスは似ていますが、プロパティを使用した方がよい場合もあり、その場合は関数よりもプロパティを使用します。
- 例外はスローされません。
- 空間複雑度は O(1) です。
- 少量の計算 (または最初の実行後にキャッシュが存在する)
- 各実行後の戻り値は同じです