为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 中命名 Getter 的惯用方式

在 Go 中命名 Getter 的惯用方式

Go
jeck猫 2021-11-22 18:38:49
Effective go 对 getter 的命名有以下建议:Go 不提供对 getter 和 setter 的自动支持。自己提供 getter 和 setter 并没有错,而且这样做通常是合适的,但是将 Get 放在 getter 的名称中既不惯用,也没有必要。如果您有一个名为 owner(小写,未导出)的字段,则 getter 方法应称为 Owner(大写,已导出),而不是 GetOwner。使用大写名称导出提供了区分字段和方法的钩子。如果需要,setter 函数可能会被称为 SetOwner。这两个名字在实践中都很好读:来源:https : //golang.org/doc/effective_go.html#Getters现在,这个建议似乎不一致,因为 stdlib 本身多次违反了这一点。正如您在上面的屏幕截图中看到的,有多种使用 GetX 命名约定的方法,这是有效的 go 指南中建议不要使用的。所以问题是指南中给出的建议是错误的还是这些方法命名错误并且会在未来版本中修复?
查看完整描述

3 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

这些名称与 Go 的设计命名不一致。Go 的创造者之一 Rob Pike谈到了 OS 包中的名称

有不一致之处,但这是关键点。它应该是 Stdout 而不是 StdOut,因为该名称来自底层系统。同样,它是 Fprintf 而不是 FPrintf 或 FPrintF,因为这是一个非常熟悉的名字。这些名字是进入 Go 的,而不是在那里创建的,最初的上限是入场费。

在 Go 的未来版本中不会更改这些名称。


查看完整回答
反对 回复 2021-11-22
?
皈依舞

TA贡献1851条经验 获得超3个赞

[go-nuts] 函数名大小写不一致

在我们真正弄清楚命名约定应该是什么之前,选择了很多全小写的名称。我们采用的规则(稍后可能值得重新审视)是 package osor中的入口点,syscall以 C 中的等价物命名,在开头只有一个大写,以避免需要决定内部大写在缩写中的位置,例如geteuid 或getwd或chdir。像 那样的名称Readdirnames是实际的单词,在某些时候可能值得重新审视。


拉斯


os:名称中的大小写不一致 #1187

关于“ os”包中使用的函数的大小写是否有任何规则?仔细看,这听起来不是很容易回想是否应该调用给定的函数LikeThat或 Likethat.


例如:


Mkdir

MkdirAll

TempDir

Getenv

ForkExec

Readlink

ReadAt

Readdir

感觉很特别,很难回想起来。


这是一个已知问题。这是计划外的。


查看完整回答
反对 回复 2021-11-22
?
桃花长相依

TA贡献1860条经验 获得超8个赞

术语“getter”指的是结构上的方法,这些方法允许您读取该结构上(通常是未导出的)字段的值。您指向的函数是顶级函数,允许您从 OS读取值。该惯用规则与本案无关。


查看完整回答
反对 回复 2021-11-22
  • 3 回答
  • 0 关注
  • 227 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信