【发布时间】:2018-01-02 06:06:03
【问题描述】:
在编程中使用“m”前缀作为变量名已经很常见了,主要是在 Android 中,但是自从 Kotlin 出现后,这个小问题让我有点困扰。
设置和获取带有“m”前缀的变量似乎不太好,因为在 Java 中我们创建(并命名)了我们的 setter 和 getter,所以我们可以省略“m”,但这在 Kotlin 中不会发生, 除非我们违背约定并重复 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");
}
}
科特林:
data class Foo(val mName: String)
fun main(args: Array<String>) {
val foo = Foo()
foo.mName = "Foo" // "m" prefix doesn't fit
}
我们应该怎么做?是否有新的约定可以遵循?
【问题讨论】:
-
老实说,我一直不明白为什么人们在 Java 中使用
m前缀。我从来没有这样做过。 -
这种做法称为匈牙利表示法。在强类型语言中似乎没有多大意义。
-
这在 Android Java 中很常见,因为 SDK 人员不久前将其作为指南引入。
-
我也投了赞成票,因为它是 Google 上 Kotlin 属性命名的第一个结果。它最终确实导致了官方文档,所以我认为这是一个很好的问题。
-
m 还是比下划线好。但两者都是其他时代甚至语言的残余。
标签: java android kotlin coding-style