如何分包
良好的分包让代码更加清晰,本节主要讲述在不同场景下分包的方法,关于包命名请参考包命名。
一、去除无意义包
golang中禁止使用类似util的无意义包名,有时开发者会将专门使用api来给提供用户使用的包命名,看似加速了代码的定位,但随着包体积的增长,将越来越难以维护包之间的依赖关系。
1.1 案例分析
考虑这样的util包结构:
utils/
├── concurrency.go
├── file.go
├── file_test.go
├── rander.go
├── rand.go
├── rand_test.go
├── string.go
├── testdata
│ ├── existdir
│ │ └── existfile
│ ├── files
│ │ ├── xxx.toml
│ │ └── xxx.txt
│ └── so
│ └── CVE_2017_0427.so
├── utils.go
└── utils_test.go该包从命名到组织有如下错误:
使用复数
utils作为包名;使用含义不清的
utils作为包名。
1.2 解决方法
将该包的内容进行分离,例如file.go中的函数有:
该文件前四个函数是对文件系统的操作,而后两个函数则是文件I/O操作,在进行分包时应为文件系统创建fs或filesystem包,为文件I/O操作创建fileio包,并将函数分别移入。修改后的文件结构应为:
对于utils中其他组件同样按照功能进行分包。
Last updated
Was this helpful?