在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_
,mName
,s_name
和kName
所示的前缀或后缀)不会使用,除非支持属性(请参阅“ 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 }
- 为什么intelliJ IDEA依赖范围是“提供”而不是“编译”?
- 在Kotlin中使用@ EnableNeo4jRepositories(basePackageClasses =“myApp”)
- 如何使用DataSource作为数据库和网络来实现页面库?
- Kotlin文件读取,使用块没有捕获所有的例外
- 我必须分配什么编译时类型才能获得java.util.Map的返回值<TextAttribute,?>
- Maven无法解析Kotlin Maven Plugin jar
- 什么更有效率? 存储变量引用与不(Android中的上下文)
- 解析xml kotlin android
- android -kotlin -java.lang.ClassCastException