5
背景
- 罗马不是一天建成的,系统功能的实现也不会是一蹴而就的。今天开发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模块代码的生成不会直接覆盖掉以后的代码。其他模块也类似。如果能做到包级的相互隔离就更赞了。