この記事では、見た目のフォーマットの問題だけでなく、Android開発者が知っておく必要のある他の種類の規則や標準についても説明します。
主な焦点は、まず第一に、世界中のGoogle開発者が従う厳格なルールです!
最初は記事が小さいと思っていましたが、コード例が多かったため、十分に成長しました。
そこで、2つに分割することにしました。
両方の部分には、Kotlinプログラミング言語のコード標準の説明が含まれています。
:
, , , ..
- , , , , .
-
().
!
, .
UTF-8 .
, , : + .kt
( enum
) , :
// PhotoAdapter.kt
class PhotoAdapter(): RecyclerView.Adapter<PhotoViewHolder>() {
// ...
}
// Utils.kt
class Utils {}
fun Utils.generateNumbers(start: Int, end: Int, step: Int) {
// ...
}
// Map.kt
fun <T, O> Set<T>.map(func: (T) -> O): List<O> = // ...
fun <T, O> List<T>.map(func: (T) -> O): List<O> = // ...
Kotlin .kt :
, ()
,
package
import
(, , )
:
/*
* Copyright 2021 MyCompany, Inc.
*
*
*/
KDoc :
/**
* Copyright 2021 MyCompany, Inc.
*
*/
// Copyright 2021 MyCompany, Inc.
//
@file
, use-site target package
:
/*
* Copyright 2021 MyCompany, Inc.
*
*/
@file:JvmName("Foo")
package com.example.android
package
import
:
package com.example.android.fragments //
import android.view.LayoutInflater //
import android.view.View
import
, .
:
import androidx.room.* //
Kotlin , , typealias
.
. extension , .
, .
, .
: , ,
, .
ASCII (0x20).
, :
Tab
, (\b, \r, \t, \\
) , Unicode (: \u000a
).
, ASCII, Unicode (∞), Unicode (\u221e
).
, :
// :
val symbol0 = "∞"
// : Unicode
val symbol1 = "\u221e" // ∞
// : ,
val symbol2 = "\u221e"
// : Unicode
return "\ufeff" + content //
!
when
if
( if
else
):
if (str.isEmpty()) return
when (option) {
0 -> return
// …
}
if, for, when
do
while
:
if (str.isEmpty())
return // !
if (str.isEmpty()) {
return // OK
}
c
, , , .
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
// ...
}
}
K&R:
try {
val response = fetchDogs("https://api.dog.com/dogs")
} catch (e: Exception) {} //
try {
val response = fetchDogs("https://api.dog.com/dogs")
} catch (e: Exception) {
} // OK
if/else
, :
val value = if (str.isEmpty()) 0 else 1 // OK
val value = if (str.isEmpty()) //
0
else
1
val value = if (str.isEmpty()) { // OK
0
} else {
1
}
4 . ( ).
(;
)
100 .
:
, (: URL)
package
import
, shell
:
infix .
, :
(
.
,.?
)
(
::
)
(,)
(
->
) lambda
, ( 4 ):
fun makeSomething(
val param1: String,
val param2: String,
val param3: Int
) {
}
:
override fun toString(): String {
return "Hello, $name"
}
override fun toString() = "Hello, $name"
, - - :
fun waitMe() = runBlocking {
delay(1000)
}
(=
):
val binding: ListItemBinding =
DataBindingUtil.inflate(inflater, R.layout.list_item, parent, false)
get
set
(4 ):
val items: LiveData<List<Item>>
get() = _items
Read-only :
val javaExtension: String get() = "java"
:
: , ,
. ( backing )
()
( ) ASCII :
, :
if
,for
catch
:
//
for(i in 1..6) {
}
// OK
for (i in 1..6) {
}
,
else
catch
:
//
}else {
}
// OK
} else {
}
:
//
if (items.isEmpty()){
}
// OK
if (items.isEmpty()) {
}
:
//
val four = 2+2
// OK
val four = 2 + 2
// (->)
//
items.map { item->item % 2 == 0 }
// OK
items.map { item -> item % 2 == 0 }
: (
::
), (.
) range (..
)
//
val str = Any :: toString
// OK
val str = Any::toString
//
item . toString()
// OK
item.toString()
//
for (i in 1 .. 6) {
println(i)
}
// OK
for (i in 1..6) {
println(i)
}
:
基本クラスまたはインターフェイスの拡張を示すコロン()の前、およびwhen
汎用タイプの式:
//
class Worker: Runnable
// OK
class Worker : Runnable
//
fun <T> min(a: T, b: T) where T: Comparable<T>
// OK
fun <T> min(a: T, b: T) where T : Comparable<T>
コロン(
:
)またはコンマ(,
)の後
//
val items = listOf(1,2)
// OK
val items = listOf(1, 2)
//
class Worker :Runnable
// OK
class Worker : Runnable
ダブルスラッシュの両側:
//
var debugging = false//
// OK
val debugging = false //
結論
この記事はかなり長いことがわかりました。お役に立てば幸いです。
次の記事:命名、特別な構成、およびドキュメント。
便利なリンク:
コトリンスタイルガイド(英語)
-
本:クリーンコード(ボブマーティン)
-
次のパートを待ってください!