在golang中,函数划分为全局函数和成员函数,在使用的时候,有种状况,会产生一些疑惑的,就是在写业务代码的时候,使用全局函数好像会比较方便,通常业务代码,都不会复用,都是针对特定的业务进行编程,要复用的代码都会封装为功能函数了。在写业务代码的时候,使用包+全局函数的划分方式,能够将业务代码写成单例,把receive也省略掉了,简单清晰。golang
使用包+全局函数的方式来划分模块,不少项目在写业务代码的时候,都是这样操做的,但这样会增长目录的层次,看起来会比较啰嗦。编程
由于使用包划分代码,业务代码使用的变量都成为了包内函数,这样在多个包内文件会互相污染,而多个业务中,可能会用到相同的变量,这样要么经过命名来避免,要么经过将包划分更细进行避免,经过命名来解决,实在太过于啰嗦,不考虑。函数
拆分后,极可能的代码结构:code
src ├── user │ ├── user.go ├── auth │───├── auth.go
这样很明显,拆分出来的目录太多了,几乎每个业务一个,也是比较啰嗦的,但也还算比较清晰,但仍是不够好。变量
为了使代码更加清晰简洁,我以为业务代码应该使用成员函数来实现,代码的结构应该是下面这样:命名
src ├── user.go ├── auth.go
这样层次简单,查看代码的时候也没那么啰嗦,并且也听从了一种原则:要维护状态的函数,都写成成员函数,反之则能够是全局函数项目