自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

?使用 gen service 自動生成代碼

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

基本介紹

設計背景

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

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

設計目標

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

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

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

同時,也允許人工維護這部分service接口。

命令使用

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

需要注意:

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

手動執(zhí)行(不建議)

如果是手動執(zhí)行命令行,直接在項目根目錄下執(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ù)說明:

圖片

自動模式(強烈建議)

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

圖片

自動模式配置教程

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

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

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

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

圖片

3. 生成接口及服務注冊文件

如果你已經(jīng)按照步驟1做好了watchers.xml的配置,那么這一步可以忽略。因為在我們編寫代碼的時候,service便同時生成了接口定義文件。

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

所以,我強烈建議你按照教程配置watchers.xml

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

圖片

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

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

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

比如這種:

圖片

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

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

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

圖片

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

圖片

6. 搞定

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

跑通業(yè)務功能

上面介紹了 gf gen service 的使用,是本期的重點。

本文轉載自微信公眾號「 程序員升級打怪之旅」,作者「王中陽Go」,可以通過以下二維碼關注。

轉載本文請聯(lián)系「 程序員升級打怪之旅」公眾號。

責任編輯:武曉燕 來源: 程序員升級打怪之旅
相關推薦

2019-08-21 19:49:21

機器學習人工智能

2019-08-07 06:16:28

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

2025-04-29 10:17:42

2023-09-26 07:43:22

工具骨架屏頁面

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架構微服務

2018-08-15 13:25:18

Java開源工具

2020-08-19 10:11:36

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

2024-11-26 08:20:53

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

2024-05-30 19:01:53

AI技術大會

2021-09-22 13:08:06

開發(fā)技能SQL

2021-03-15 12:00:19

Kubernetes微服務架構

2021-09-07 14:35:48

DevSecOps開源項目

2018-09-04 15:10:40

2024-03-04 08:19:11

SpringURLHeader

2018-02-25 04:57:01

物聯(lián)網(wǎng)網(wǎng)絡技術v

2024-03-11 18:17:18

Python字符串分隔符
點贊
收藏

51CTO技術棧公眾號