在Kotlin中为variables使用“m”前缀

那么,使用“m”前缀variables名变得通常编程,主要是在Android,但是,因为KOTLIN到达,这个小事让我困扰了一下。 在父类里面没有什么新东西,但是设置和从另一个类获取variables似乎并不舒服,因为在Java中我们创建(和命名)我们的setters和getters,所以我们可以省略“m”,什么不发生在科特林,除非我们走在惯例的相反,并重复Java的技术。

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"); } } 

科特林:

 fun main(args: Array) { val foo = Foo() foo.mName = "Foo" // "m" gets a bit weird, don't you think? } class Foo(val mName: String) 

这可能看起来是一种愚蠢的讨论,但是在这种情况下你是如何表现的呢? 我发现它非常奇怪,所以在Kotlin停止使用“m”。

Android的一个很好的参考

https://android.github.io/kotlin-guides/style.html

特殊前缀或后缀(如示例name_,mName,s_name和kName中所示的前缀或后缀)不会使用,除非支持属性(请参阅“ Backing属性 ”)。

根据Android Kotlin风格指南 :

特殊前缀或后缀(如示例name_mNames_namekName所示的前缀或后缀)不会使用,除非支持属性(请参阅“ Backing属性 ”)。

因此,你不应该在Kotlin中使用variables的“m”前缀。

我其实不认为在公共API中有前缀variables是好的做法,因此foo.mName = "Foo"将是foo.mName = "Foo" 。 对于私人领域,这是可以接受的。

Kotlin语言的官方公约说:

支持属性的名称如果一个类有两个属性在概念上是相同的,但一个是公共API的一部分,另一个是实现细节,则使用下划线作为私有属性名称的前缀:

 class C { private val _elementList = mutableListOf() val elementList: List get() = _elementList }