[zeromicro/go-zero]改进'goctl api go'生成代码的模块化程度

2024-03-18 817 views
5

image

背景
  • 罗马不是一天建成的,系统功能的实现也不会是一蹴而就的。今天开发A功能,明天开发B功能,后天开发C功能,而开发A功能时,大概率不会想清楚后续的Z功能的具体实现。
  • 假设我今天开发A功能,并且写了一个a.api文件。过几天,我开发B功能,写了一个b.api。我想通过goctl api go --api b.api生成B功能相关的代码,但是就会遇到类似截图中的困境:无法在当前项目目录下生成B功能相关的代码,如果选择生成,之前开发的功能的部分代码就会被覆盖掉(types.go、routes.go等)。
需求
  • goctl工具能够支持迭代式的代码生成且保证不会覆盖已有代码
方案(个人浅见)
  • 支持覆盖追加两种代码生成模式。比如在二次执行goctl api go --api xxx.api时,由操作人选择是覆盖或者追加到已有的代码文件中(types.go、routes.go等)。
  • 将代码进一步划分到不同的源代码文件中,做到更彻底点的模块化。举例来说,a.api生成的types相关的代码就放置在types/a.go中,b.api生成的types相关的代码就放置在types/b.go中。这样一来,b模块代码的生成不会直接覆盖掉以后的代码。其他模块也类似。如果能做到包级的相互隔离就更赞了。

回答

8

现在就是隔离的,能编辑的和不能编辑的已经隔离

8

我知道问题出在哪里了,你们的前提假设是xxx.api只有一个(不管有几个模块)。

3

现在是所有的api只能写在一个.api文件里面么?

8

建议只写一个,否则就会遇到我这个issue中说的情况。