【发布时间】:2016-04-17 19:18:57
【问题描述】:
我在理解 Scala 中关于 mutators 的命名时遇到了一些麻烦。这是我无法理解的部分:
class Company {
private val _name: String = _
def name = _name
def name_=(name: String) {
_name = name
}
}
所以我知道 _name 是私有字符串,第一个 def 名称是 getter/accessor 而第二个是 setter/mutator。从本质上讲,我了解代码的含义和作用,但我不确定个人偏好与代码标准/所需的执行方式是什么。所有的变异器都会有 _ 后缀吗?用下划线作为私有属性前缀是标准的还是个人偏好?
或者我可以将 mutator 定义如下?
def name=(name: String) {
_name = name
}
同样,我是否将私有 val 前缀与下划线或我可以将其更改为:
def name=(name: String) {
name = name
}
我从Scala Naming Conventions和Daniel Spewak's Accessors/Mutators得到了上面的代码
【问题讨论】:
-
你尝试编译你的代码吗?
-
提供的链接对约定非常清楚。但是如果谈到编译器的限制,Scala 编译器要求你将你的 setter 命名为
{getterName}_=,这是唯一的要求(除了签名的其他部分)。你可以随意命名你的私有变量,甚至完全跳过它,让你的 getter 和 setter 可计算 -
虽然链接清楚地说明了约定,但它们并不清楚要求。我认为 Archeg 写的是一个好的答案的基础。
-
我不认为这是Hungarian notation - 名称中的任何内容都与类型无关(在链接的文章中确实如此表示,下划线是一种匈牙利前缀,但仍然...)。
标签: scala properties naming-conventions