プログラミングでは、主にAndroidで、変数名に「m」プレフィックスを使用することが一般的になりましたが、Kotlinが登場して以来、この些細なことが少し気になります。
Javaでは、セッターとゲッターを作成(および名前付け)するため、 "m"を省略できるため、プレフィックスが "m"の変数の設定と取得はあまり適切ではないようですが、これは慣例の反対を歩き、Javaの手法を繰り返さない限り、Kotlinでは発生しません。
Java:
public class Foo {
private String mName;
public void setName(String name) {
mName = name;
}
public String getName() {
return mName;
}
}
public class Main {
public static void main(String[] args) {
Foo foo = new Foo();
foo.setName("Foo");
}
}
Kotlin:
data class Foo(val mName: String)
fun main(args: Array<String>) {
val foo = Foo()
foo.mName = "Foo" // "m" prefix doesn't fit
}
私たちは何をすべき?従うべき新しい慣習はありますか?
Androidからの良いリファレンス
https://Android.github.io/kotlin-guides/style.html
Name_、mName、s_name、およびkNameの例に見られるような特別な接頭辞または接尾辞は、バッキングプロパティの場合を除いて使用されません(「 バッキングプロパティ 」を参照)。
例に見られるような特別な接頭辞または接尾辞
name_
、mName
、s_name
およびkName
は、バッキングプロパティの場合を除いて使用されません(「 バッキングプロパティ 」を参照)。
したがって、Kotlinの変数に「m」プレフィックスを使用しないでください。
実際、パブリックAPIに接頭辞付きの変数を設定するのは良い習慣ではないと思います。したがって、foo.mName = "Foo"
は望ましくありません。 privateフィールドの場合、これは許容されます。
Kotlin言語の公式 conventions は次のように述べています。
バッキングプロパティの名前
クラスに概念的に同じ2つのプロパティがあり、一方がパブリックAPIの一部であり、もう一方が実装の詳細である場合は、プレフィックスとしてアンダースコアを使用します。私有財産の名前については:
class C {
private val _elementList = mutableListOf<Element>()
val elementList: List<Element>
get() = _elementList
}