Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ST1003: should not use underscores in package names (stylecheck) #398

Open
CarlJi opened this issue Oct 7, 2024 · 0 comments
Open

ST1003: should not use underscores in package names (stylecheck) #398

CarlJi opened this issue Oct 7, 2024 · 0 comments

Comments

@CarlJi
Copy link
Contributor

CarlJi commented Oct 7, 2024

在 Go 语言中,建议不要在包名称中使用下划线 _。这是因为 Go 社区遵循一套明确的代码风格指南,而避免使用下划线是这些风格指南中的一部分。ST1003stylecheck linter 的规则之一,它会提醒你遵守这些风格建议。

具体原因如下:

1. Go 的命名约定

Go 语言有一套简单而一致的命名约定,包名一般使用 简短的、全部小写的单词,并且不使用下划线或驼峰式命名。例如,标准库中的包名都是简短且无下划线的,例如 fmt, strings, http 等。

Go 语言的官方风格指南(Effective Go)中提到:

  • 包名应该是简短的、全小写的,并且不包含下划线。

2. 一致性和可读性

Go 社区鼓励代码风格的一致性。避免在包名中使用下划线有助于保持代码库的清晰和一致。特别是当你与其他开发者协作时,遵循统一的命名规则可以避免混乱和歧义。

3. 避免与标识符命名冲突

在 Go 中,包的名称通常会成为标识符的一部分。例如,使用 fmt.Println 调用 fmt 包中的 Println 函数。如果包名中包含下划线,可能会导致不必要的复杂性或混淆。

例如,假设你有一个包名为 my_package,那么使用这个包时需要写作:

my_package.SomeFunction()

这可能会让代码显得冗长且不符合惯例。相比之下,简短的名称如 mypackage 更符合 Go 的风格:

mypackage.SomeFunction()

4. 便于阅读

下划线通常在 Go 的变量命名中也不常见。包名中的下划线会显得不自然,且不符合 Go 代码的直观可读性。Go 的设计哲学之一是让代码尽可能简洁和易读,避免多余的符号。

5. 工具链和生态的支持

由于 Go 的工具链和生态(如 linter 和格式化工具)广泛遵循这些命名规则,使用下划线可能会触发警告或错误。例如,stylecheck linter 就会通过 ST1003 规则提醒你不要在包名中使用下划线。

总结

ST1003 的警告是为了促进代码的一致性、可读性和维护性,遵循 Go 社区的最佳实践。为了避免这个警告,建议在包名中使用简短、全小写、无下划线的名字。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant