今天在我的 Go 项目中工作时,我意识到我遇到了一个小问题。我有一个 a package,它包含struct一个指向另一个 struct 的指针package。但是,这package也使用了另一个包中的结构。在 C 和 C++ 中,这不会造成问题,因为我会使用标题保护。但是,在 Go 中,由于无限import递归,这样的程序将无法编译。
这让我想知道,我的项目中是否有太多包?我应该喜欢更大的包裹吗?我一直被告知每个包都应该专门专注于一件事。
现在,我的结构是这样的。
game/ <-- imports engine, needs to access the resource manager a lot
video/ <-- rendering goes here
renderer.go
shader.go
scene.go
...
engine/ <-- imports video, file, etc
root.go <-- contains a Root struct, handles initialisation etc
resource.go
...
file/
dds.go
config.go
resource_list.go
script.go
...
main.go
...
也就是说,这是我的问题:
你会如何解决这个问题?你会把video
和engine
包结合起来吗?重新设计您的程序,以便video
不再依赖于engine
?
您如何决定何时适合制作新包装?您是否基于功能?你按类别分组吗?
你对这个main
包有多大用处?我个人倾向于尽快摆脱它,也许是因为我太习惯 OOP。
慕神8447489
相关分类