偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

開發(fā) 項(xiàng)目管理
在業(yè)務(wù)項(xiàng)目實(shí)踐中,業(yè)務(wù)邏輯封裝往往是最復(fù)雜的部分,同時(shí),業(yè)務(wù)模塊之間的依賴十分復(fù)雜、邊界模糊,無法采用Golang包管理的形式。

?使用 gen service 自動(dòng)生成代碼

注意:該功能特性從goframe v2.1版本開始提供。

基本介紹

設(shè)計(jì)背景

在業(yè)務(wù)項(xiàng)目實(shí)踐中,業(yè)務(wù)邏輯封裝往往是最復(fù)雜的部分,同時(shí),業(yè)務(wù)模塊之間的依賴十分復(fù)雜、邊界模糊,無法采用Golang包管理的形式。

如何有效管理項(xiàng)目中的業(yè)務(wù)邏輯封裝部分呢?對(duì)于每個(gè)采用Golang開發(fā)的項(xiàng)目都是必定會(huì)遇到的難題。

設(shè)計(jì)目標(biāo)

增加logic分類目錄,將所有業(yè)務(wù)邏輯代碼遷移到logic分類目錄下,采用包管理形式來管理業(yè)務(wù)模塊。

業(yè)務(wù)模塊之間的依賴通過接口化解耦,將原有的service分類調(diào)整為接口目錄。這樣每個(gè)業(yè)務(wù)模塊將會(huì)各自維護(hù)、更加靈活。

可以按照一定的項(xiàng)目規(guī)范,從logic業(yè)務(wù)邏輯代碼生成service接口定義代碼。

同時(shí),也允許人工維護(hù)這部分service接口。

命令使用

gf gen service命令通過分析給定的logic業(yè)務(wù)邏輯模塊目錄下的代碼,自動(dòng)生成service目錄接口代碼。

需要注意:

  • 由于該命令是根據(jù)業(yè)務(wù)模塊生成service接口,因此只會(huì)解析二級(jí)目錄下的go代碼文件,并不會(huì)無限遞歸分析代碼文件。以logic目錄為例,該命令只會(huì)解析logic/xxx/*.go文件。因此,需要logic層代碼結(jié)構(gòu)滿足一定規(guī)范。
  • 不同業(yè)務(wù)模塊中定義的結(jié)構(gòu)體名稱在生成的service接口名稱時(shí)可能會(huì)重復(fù)覆蓋,因此需要在設(shè)計(jì)業(yè)務(wù)模塊時(shí)保證名稱不能沖突。手動(dòng)模式

手動(dòng)執(zhí)行(不建議)

如果是手動(dòng)執(zhí)行命令行,直接在項(xiàng)目根目錄下執(zhí)行 gf gen service 即可。

$ gf gen service -h
USAGE
gf gen service [OPTION]

OPTION
-s, --srcFolder source folder path to be parsed. default: internal/logic
-d, --dstFolder destination folder path storing automatically generated go files. default: internal/service
-f, --dstFileNameCase destination file name storing automatically generated go files, cases are as follows:
| Case | Example |
|---------------- |--------------------|
| Lower | anykindofstring |
| Camel | AnyKindOfString |
| CamelLower | anyKindOfString |
| Snake | any_kind_of_string | default
| SnakeScreaming | ANY_KIND_OF_STRING |
| SnakeFirstUpper | rgb_code_md5 |
| Kebab | any-kind-of-string |
| KebabScreaming | ANY-KIND-OF-STRING |
-w, --watchFile used in file watcher, it re-generates all service go files only if given file is under
srcFolder
-a, --stPattern regular expression matching struct name for generating service. default: ^s([A-Z]\\w+)$
-p, --packages produce go files only for given source packages
-i, --importPrefix custom import prefix to calculate import path for generated importing go file of logic
-l, --clear delete all generated go files that are not used any further
-h, --help more information about this command

EXAMPLE
gf gen service
gf gen service -f Snake

參數(shù)說明:

圖片

自動(dòng)模式(強(qiáng)烈建議)

如果你是使用的GolandIDE,那么可以使用官方提供的配置文件:watchers.xml 

圖片

自動(dòng)模式配置教程

1. 引入官方提供的配置文件

建議在使用Goland IDE時(shí),使用官方提供的配置文件:watchers.xml

watchers.xml下載地址:https://goframe.org/pages/viewpage.action?pageId=49770772&preview=/49770772/49770777/watchers.xml

2. 編寫業(yè)務(wù)邏輯代碼

圖片

3. 生成接口及服務(wù)注冊文件

如果你已經(jīng)按照步驟1做好了watchers.xml的配置,那么這一步可以忽略。因?yàn)樵谖覀兙帉懘a的時(shí)候,service便同時(shí)生成了接口定義文件。

如果沒有配置,我們每次編寫logic業(yè)務(wù)模塊后,都需要手動(dòng)執(zhí)行一下 gf gen service 命令。

所以,我強(qiáng)烈建議你按照教程配置watchers.xml

不管用哪種方式,生成的service目錄,效果如下:

圖片

注意:下面就是我說的初學(xué)者容易踩的坑

4. 注意服務(wù)的實(shí)現(xiàn)注入部分(僅一次)

只有在生成接口文件后,才能在每個(gè)業(yè)務(wù)模塊中加上接口的具體實(shí)現(xiàn)注入。該方法每個(gè)業(yè)務(wù)模塊加一次就可以。

比如這種:

圖片

5. 在啟動(dòng)文件中引用接口實(shí)現(xiàn)注冊(僅一次)

注意:gf gen service命令除了生成接口文件之外,還生成了一個(gè)接口實(shí)現(xiàn)注冊文件。

這個(gè)文件用于程序啟動(dòng)時(shí),將接口的具體實(shí)現(xiàn)執(zhí)行注冊。

圖片

該文件的引入需要在main包的最頂部引入,需要注意import的順序,放到最頂部,后面加一個(gè)空行。如果同時(shí)存在packed包的引入,那么放到packed包后面。像這樣:

圖片

6. 搞定

完成上面的5步操作,我們就搞定了初學(xué)者容易踩坑的:通過編寫logic層業(yè)務(wù)邏輯,自動(dòng)生成service層代碼部分

跑通業(yè)務(wù)功能

上面介紹了 gf gen service 的使用,是本期的重點(diǎn)。

本文轉(zhuǎn)載自微信公眾號(hào)「 程序員升級(jí)打怪之旅」,作者「王中陽Go」,可以通過以下二維碼關(guān)注。

轉(zhuǎn)載本文請(qǐng)聯(lián)系「 程序員升級(jí)打怪之旅」公眾號(hào)。

責(zé)任編輯:武曉燕 來源: 程序員升級(jí)打怪之旅
相關(guān)推薦

2019-08-07 06:16:28

物聯(lián)網(wǎng)IOT技術(shù)

2019-08-21 19:49:21

機(jī)器學(xué)習(xí)人工智能

2023-09-26 07:43:22

工具骨架屏頁面

2025-04-29 10:17:42

2022-11-04 08:38:57

索引數(shù)據(jù)分庫

2018-10-26 14:32:46

2014-10-29 14:52:13

程序員

2017-06-08 09:19:35

2020-12-03 10:17:25

Kubernetes架構(gòu)微服務(wù)

2020-08-19 10:11:36

SQLMySQL數(shù)據(jù)庫

2018-08-15 13:25:18

Java開源工具

2024-05-30 19:01:53

AI技術(shù)大會(huì)

2024-11-26 08:20:53

程序數(shù)據(jù)歸檔庫

2021-09-22 13:08:06

開發(fā)技能SQL

2021-09-07 14:35:48

DevSecOps開源項(xiàng)目

2021-03-15 12:00:19

Kubernetes微服務(wù)架構(gòu)

2024-03-04 08:19:11

SpringURLHeader

2018-09-04 15:10:40

2018-02-25 04:57:01

物聯(lián)網(wǎng)網(wǎng)絡(luò)技術(shù)v

2010-09-25 08:44:34

捆綁后門
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)