在 Go、CamelCase 或 Semi-CamelCase 中以哪种方式命名函数?
技术问答
272 人阅读
|
0 人回复
|
2023-09-12
|
我想在 Go在 中写一个函数,将文档插入 MongoDB 数据库集合。哪种方式更好地命名函数,- Z2 S4 a8 [8 e7 V! h& X* P
writeToMongoDB 或者0 @3 a# a; s+ c" r8 V: k- A
WriteToMongoD?第二个是CamelCase,我看到有人用第一种风格,不知道哪个更合适。谢谢你。
2 t/ H& Y/ F) j( K% t2 A ' |7 B5 G$ i' r" ^: ^/ {: A
解决方案: , @0 l/ T3 e0 n' z8 P1 J
语法在 Go 中,这不是风格问题,而是语法问题。) ]7 m# D% Y: n; M1 C: X
从大写字母开始导出的名称(即可以从定义包外使用的标识符)。所以,如果你的方法是公共 API 的一部分应写成:
$ u7 k" x' r9 x* y7 d8 WWriteToDB但如果是内部辅助方法,应该这样写:
4 u; w$ R- j. k i( \9 G& @writeToDB定义导出性定义导出性(extern,public等)相比之下,这样做的好处是,将其作为名称的一部分,可以确保您知道它是否在任何使用标志符的地方导出,而无需找到其定义的位置(查看定义是否包含关键字)。5 `6 \' I2 j, O+ \) ^- D; U
另请参阅: 规范中的导出标识符。# t b( x3 ^/ ^! x) t
国际化因为 Go 是 UTF-8 编码,并支持任何具有字母或数字属性的标识符名称Unicode 字符,所以一些语言环境中没有大小写概念的人可能无法创建导出方法(默认是非导出)。在这种情况下(双关语),通常在标志符前添加前缀X例如:X日本语
0 t4 ^) r0 `& Y8 J另请参阅: Unicode 标识符是怎么回事?常见问题。' r& e' e0 ?% m$ ?1 x" {2 C
风格就一般风格而言,总是使用驼峰大小写(除了第一个字母,如前所述)。这包括常量、函数和其他标识符。因此,例如(导出)常量列表可能如下:
- Z* t! E" F+ w& u Wconst StateConnected = iota StateError StateDone internalStateMask = 0x2 )+ T1 i, S9 ] X7 z5 l
此外,缩写总是使用相同的大小写,因此您可以编写以下内容之一:2 [) X6 P4 {) r: U! |# n$ u9 ?( v
dbWritewriteDB9 Q$ O t+ o" {) Z5 t; P
而不是writeDb或DbWrite。 |
|
|
|
|
|