一尘不染

在 Go、CamelCase 或 Semi-CamelCase 中以哪种方式命名函数?

go

我想在 Go 中编写一个函数来将文档插入到 MongoDB 数据库的集合中。函数取名哪种方式更好,

  • writeToMongoDB 或者
  • WriteToMongoD?

第二个是CamelCase,我看到有人用第一个的风格,不知道哪个更合适。谢谢。


阅读 177

收藏
2021-12-10

共1个答案

一尘不染

语法

在 Go 中,这不是风格问题,而是语法问题。

导出的名称(即可以从定义它们的包之外的包中使用的标识符)以大写字母开头。因此,如果您的方法是公共 API 的一部分,则应编写为:

WriteToDB

但如果它是一个内部辅助方法,则应该这样写:

writeToDB

与使用关键字来定义导出性(extern,public等)相比,这样做的好处在于,将其作为名称的一部分可确保在任何使用标识符的地方您都可以知道它是否被导出,而无需找到它的位置已定义(查看定义是否包含关键字)。

另请参阅: 规范中的导出标识符

国际化

因为 Go 是 UTF-8 编码的,并且支持标识符名称中带有字母或数字属性的任何 Unicode 字符,所以一些语言环境中没有大小写概念的人可能无法创建导出的方法(默认是非导出的)。在这种情况下(双关语),通常在标识符前加前缀X以表示出口。例如:X日本語

另请参阅: Unicode 标识符是怎么回事?从常见问题。

风格

就一般风格而言,始终使用驼峰式大小写(除了第一个字母,如前所述)。这包括常量、函数和其他标识符。因此,例如(导出的)常量列表可能如下所示:

const (
    StateConnected = iota
    StateError
    StateDone

    internalStateMask = 0x2 
)

此外,缩写总是使用相同的大小写,因此您可以编写以下内容之一:

dbWrite
writeDB

而不是writeDbDbWrite

2021-12-10