当前位置: 首页 > 科技观察

如何借助工具快速生成代码?这些新手容易踩的坑一定要避免

时间:2023-03-15 00:12:02 科技观察

使用gen服务自动生成代码注:此功能从goframev2.1开始可用。基本介绍设计背景在业务项目的实践中,业务逻辑封装往往是最复杂的部分。同时,业务模块之间的依赖关系非常复杂,边界模糊,无法采用Golang包管理。如何有效管理项目的业务逻辑封装部分?对于每一个用Golang开发的项目来说,都是一个不可避免的问题。设计目标是增加逻辑分类目录,将所有业务逻辑代码迁移到逻辑分类目录,使用包管理对业务模块进行管理。通过接口解耦业务模块之间的依赖关系,将原有的服务分类调整到接口目录下。这样每个业务模块都会单独维护,更加灵活。服务接口定义代码可以根据一定的项目规范由逻辑业务逻辑代码生成。同时,也允许对这部分服务接口进行人工维护。该命令使用gfgenservice命令,通过分析给定逻辑业务逻辑模块目录下的代码,自动生成服务目录接口代码。注意:由于该命令是根据业务模块生成服务接口的,所以只是解析二级目录下的go代码文件,并没有无限递归解析代码文件。以logic目录为例,该命令只会解析logic/xxx/*.go文件。因此,逻辑层代码结构需要满足一定的规范。不同业务模块中定义的结构体名称在生成的服务接口名称中可能会被重复覆盖,因此在设计业务模块时需要保证名称不冲突。手动模式手动执行(不推荐)如果手动执行命令行,直接在项目根目录下执行gfgenservice即可。$gfgenservice-hUSAGEgfgenservice[OPTION]OPTION-s,--srcFolder要解析的源文件夹路径。默认值:internal/logic-d,--dstFolder存放自动生成的go文件的目标文件夹路径。默认:internal/service-f,--dstFileNameCase存放自动生成的go文件的目标文件名,case如下:|案例|范例||----------------|--------------------||降低|任意字符串||骆驼|任何一种字符串||骆驼低|任何一种字符串||蛇|任何类型的字符串|默认|蛇尖叫|ANY_KIND_OF_STRING||蛇先上|rgb_code_md5||烤肉串|任何类型的字符串||烤肉串尖叫|任何类型的字符串|-w,--watchFile在文件观察器中使用,仅当给定文件在srcFolder下时,它才重新生成所有服务go文件-a,--stPattern正则表达式匹配结构名称以生成服务。default:^s([A-Z]\\w+)$-p,--packages只为给定的源包生成go文件-i,--importPrefix自定义导入前缀来计算逻辑生成的导入go文件的导入路径-l,--cleardeleteallgeneratedgofilesthatarenotusedanyfurther-h,--helpmoreinformationaboutthiscommand示例gfgenservicegfgenservice-fSnake参数说明:自动模式(强烈推荐)如果你使用的是GolandIDE,可以使用官方配置文件:watchers.xml自动模式配置教程1.介绍官方配置文件使用GolandIDE时推荐使用官方配置文件:watchers.xmlwatchers.xml下载地址:https://goframe.org/pages/viewpage.action?pageId=49770772&preview=/49770772/49770777/watchers.xml2.编写业务逻辑代码3.生成接口和服务注册文件如果你已经按照步骤1配置了watchers.xml,那么这一步可以忽略,因为我们写代码的时候,service会同时生成接口定义文件。如果没有配置,我们每次写逻辑业务模块的时候都需要手动执行gfgenservice命令。所以强烈建议大家按照教程配置watchers.xml。无论使用哪种方法,生成的服务目录都会有如下效果:注意:下面是我说的新手容易踩的坑。4、注意服务的实现注入部分(只做一次)只有在接口文件生成后,才能在各个业务模块中添加接口的具体实现注入。每个业务模块可以添加一次该方法。比如这个:5.在启动文件中引用接口实现注册(只引用一次)注意:gfgenservice命令除了生成接口文件外,还会生成一个接口实现注册文件。该文件用于在程序启动时注册接口的具体实现。这个文件的导入需要在主包的最前面引入。注意import的顺序,放在最前面,后面加一个空行。如果同时有packedpackage的介绍,则放在packedpackage后面。像这样:6、完成上面5个步骤后,我们就解决了初学者容易踩的问题:通过编写逻辑层的业务逻辑,自动生成服务层的代码来部分跑通业务功能。上面介绍了gfgen服务的使用。是本期的重点。本文转载自微信公众号《程序员的升级打怪之旅》,作者“王中阳围棋”,可通过以下二维码关注。转载本文请联系《程序员升级打怪之旅》公众号。