Golang Go语言中一个导出包内符号的合适方法,用于工程
Golang Go语言中一个导出包内符号的合适方法,用于工程
具体的内容请阅读: https://github.com/fumeboy/a-way-to-export-symbols
背景
在小型 golang 项目中,随意地使用大写字母开头的命名来导出符号是很轻松的,没有太大的阅读包袱。
但是当项目变得很大时,大写字母开头的命名则很难做好视觉上或其他方面上的提醒,在当项目转手时,它对于新程序员的上手是个不小的折磨。
这个时候我们需要一个好的方法来进行包内符号的导出
方法内容
很简单,没有什么魔法。
一句话概括: 把 包内符号的导出 放在特定的文件中进行。
假如 我有一个包,它是 pkg_example,这个包里我有这些符号需要导出:
// inner.go
type inner_typ_a int
type inner_typ_b int
func inner_fn_a(){}
func inner_fn_b(){}
var inner_var_a = 1
var inner_var_b = 1
但是我并不直接修改它们的名字,而是给 pkg_example 创建一个特定的文件:exports.go
在这个文件里,创建这些符号的别名,这些别名是被导出的:
// exports.go
type (
TYP_a = inner_typ_a
TYP_b = inner_typ_b
)
var (
FN_a = inner_fn_a
FN_b = inner_fn_b
)
var (
VAR_a = inner_var_a
VAR_b = inner_var_b
)
就是这么简单
注意
仅当在给变量做别名时,需要额外的考虑:
var VAR_a = inner_var_a
这句赋值发生时,inner_var_a 是否已经初始化了?
若没有初始化,VAR_a 得到的是一个“空值”而不是初始化后的 inner_var_a
更多关于Golang Go语言中一个导出包内符号的合适方法,用于工程的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
这个算是一种开发规范吗?
更多关于Golang Go语言中一个导出包内符号的合适方法,用于工程的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
我是这样想的,它的功效就像 API doc 或者目录一样
这个 export.go 应该可以根据某种(能被 go/ast 解析的)规则自动生成(我们之前也有写差不多的东西来做 package migration
#2 那不是有 godoc 么
…………我一行 go doc 就能输出文档,要你这个干啥?
在Golang(Go语言)中,导出包内符号(即函数、类型、变量等)的方法主要依赖于标识符的首字母大小写。在Go中,如果一个标识符的首字母大写,则该标识符是导出的,可以被其他包访问。以下是一些关于如何合适地导出包内符号的建议:
-
明确导出:只导出那些确实需要被其他包使用的符号。避免过度导出,这有助于保持包的封装性和API的清晰性。
-
命名规范:使用清晰且有意义的名称来导出符号。这有助于其他开发者理解符号的用途,减少误解和误用。
-
文档注释:为每个导出的符号添加适当的文档注释,解释其用途、参数、返回值等。这有助于提高代码的可读性和可维护性。
-
内部实现隐藏:将不需要被外部访问的符号(如辅助函数、内部类型等)的首字母小写,以隐藏它们。这有助于保持包的简洁性和安全性。
-
版本控制:在导出符号时,要考虑到未来的兼容性。尽量避免在后续版本中更改导出的符号的签名或行为,以减少对依赖该包的代码的影响。
-
测试覆盖:为导出的符号编写充分的单元测试,以确保其正确性和稳定性。这有助于增强其他开发者对包的信任度和使用意愿。
综上所述,合适地导出包内符号需要遵循一定的规范和最佳实践,以确保包的可用性、稳定性和可维护性。