Effective go有关于getter命名的以下建议:
Go并不为getter和setter提供自动支持。有' S 自己提供吸气剂和制定者并没有错,而且它也是如此 通常适合这样做,但它既不是惯用的,也不是必需的 将Get放入getter的名字。如果您有一个名为owner的字段 (小写,未导出),getter方法应该称为Owner (大写,导出),而不是GetOwner。使用大写名称 export提供了用于区分字段和方法的钩子。一个 如果需要,setter函数可能会被称为SetOwner。两个名字 在实践中读得很好:
来源:https://golang.org/doc/effective_go.html#Getters
现在,这个建议似乎并不一致,因为stdlib本身多次违反了这个建议。
正如您在上面的屏幕截图中看到的,有多种方法使用GetX命名约定,这在有效的指南中是建议的。
所以问题是指南中给出的建议是错误的,或者这些方法被错误地命名为&在将来的版本中会修复吗?
答案 0 :(得分:4)
这些名称与Go命名设计不一致。作为Go创作者之一的Rob Pike says this about the names in the OS package:
存在不一致之处,但这是关键点。它应该是Stdout而不是StdOut,因为该名称来自底层系统。同样,它的Fprintf不是FPrintf或FPrintF,因为这是一个非常熟悉的名称。这些名字是Go,而不是在那里创建,最初的上限是入场费。
在Go的未来版本中不会更改名称。
答案 1 :(得分:2)
术语“getters”是指 structs 上的方法,它们允许您读取该结构上(通常未导出的)字段的值。您指向的功能是顶级函数,它允许您从OS 中读取值。这个惯用法则与此案无关。
答案 2 :(得分:1)
[go-nuts] FunctionName caseinconsistencies
我们真的选择了许多全部小写名称 弄清楚命名惯例应该是什么。我们的规则 后来可能值得重新考虑的是入门点 在包
os
或syscall
中,它们以C中的等价物命名 在开始时有一个单一的资本,以避免需要决定 内部大写字母缩写为geteuid
的缩写 或getwd
或chdir
。像Readdirnames
这样的名字,它们是实际的单词, 可能值得重新审视。拉斯
os: inconsistent casing in names #1187
是否存在关于使用的函数大小的任何规则 “
os
”套餐?仔细观察,听起来不是很容易 回想一下给定的函数是否应该被称为LikeThat
或Likethat
。例如:
Mkdir MkdirAll TempDir Getenv ForkExec Readlink ReadAt Readdir
感觉非常特别,很难回想起来。
这是一个已知问题。这是无计划的。