类似 Golang 变量的命名约定
Naming convention for similar Golang variables
在一些情况下,我将相同的基础值表示为多种类型。
示例:
userIDString := r.URL.Query("id")
userID, err := strconv.Atoi(userIDString)
我需要在不同的地方使用上述两个变量。
同样
recordSeparator = rune(30)
recordSeparatorString = string(30)
我命名这些变量的方法被认为是惯用的吗?如果不是,这种情况的理想命名约定是什么?
PS:我不认为这个问题主要是基于意见的,我正在寻找参考流行的 go 项目/标准库中的命名约定的答案。
可能是该领域最权威的书籍 The Go Programming Language,在 10.6 包和命名 部分讨论了这个主题:
- 保持名称简短但不要使它们含糊不清(
user
超过 userName
)
- 包名称通常采用单数形式(除非与预先声明的类型发生冲突)
- 选择名称,以便他们在包的上下文中阅读,例如,net.IP
此外,还有一个不错的幻灯片 What's in a name addressing some of the questions and a somewhat informative reddit thread 可能也很有用。
然而,根据我的经验,大多数命名约定(除了上面提到的)都是特定于项目或公司的。
在一些情况下,我将相同的基础值表示为多种类型。
示例:
userIDString := r.URL.Query("id")
userID, err := strconv.Atoi(userIDString)
我需要在不同的地方使用上述两个变量。
同样
recordSeparator = rune(30)
recordSeparatorString = string(30)
我命名这些变量的方法被认为是惯用的吗?如果不是,这种情况的理想命名约定是什么?
PS:我不认为这个问题主要是基于意见的,我正在寻找参考流行的 go 项目/标准库中的命名约定的答案。
可能是该领域最权威的书籍 The Go Programming Language,在 10.6 包和命名 部分讨论了这个主题:
- 保持名称简短但不要使它们含糊不清(
user
超过userName
) - 包名称通常采用单数形式(除非与预先声明的类型发生冲突)
- 选择名称,以便他们在包的上下文中阅读,例如,net.IP
此外,还有一个不错的幻灯片 What's in a name addressing some of the questions and a somewhat informative reddit thread 可能也很有用。
然而,根据我的经验,大多数命名约定(除了上面提到的)都是特定于项目或公司的。