精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

GO 中優雅編碼和降低圈復雜度

開發 前端
若是很多代碼都是面向過程的,各種業務邏輯,非業務的邏輯都混合在一起,主流程上插入一些亂七八糟的邏輯,上下文并沒有啥關系的東西,一個函數上千行的代碼也是隨處可見,這種情況狗看了都搖頭

theme: Chinese-red

本次主要是聊聊關于使用接口抽象和降低圈復雜度的方式

工作中,難免會遇到老項目老代碼,不僅僅需要我們維護,可能還需要我們在原來的垃圾代碼上進行新增功能或者是進行優化調整

例如

現有的老代碼中關于用戶系統這一塊就已經經是搖搖欲墜,牽一發而動全身,并且去弄清其中的業務細節,那可以說是很難撥開迷霧,甚至交接都是一句話的那種,更是難上加難

這種情況,相信每個公司都會存在,畢竟過去的需求,過去的標準,放到現在來看,啥也不是

若是很多代碼都是面向過程的,各種業務邏輯,非業務的邏輯都混合在一起,主流程上插入一些亂七八糟的邏輯,上下文并沒有啥關系的東西,一個函數上千行的代碼也是隨處可見,這種情況狗看了都搖頭

對業務函數需要做基本的封裝

首先咱們編碼前一定會去捋清楚基本的需求,設計,以及實現流程,對于需要用到的工具我們會對代碼結構進行分層

例如一些與業務主邏輯沒有什么關聯的功能就可以獨立封裝,便于維護和使用,例如:

  • 工具包(例如語言中的各種計算,數據處理,加解密等等)
  • 基本的 rpc 通信
  • http 相關的各種通信方式
  • 基本的中間件,攔截器,打點接口延時等等
  • 數據庫操作(獨立封裝 DAO 層提供出來)
  • 緩存操作
  • 消息隊列
  • ...等等

盡可能的將這些單獨的功能模塊拆解出去,獨立出來,單獨維護

對于那種沒有必要同步的功能,完全可以通過異步化來進行處理,異步的話相信你會很容易想到消息隊列來進行實現

自然實際項目中你能夠看到最開始可能也會這樣去做,但是隨著業務越來越復雜,這些獨立的模塊被各種包進行使用,甚至有的開始慢慢的弄成定制化的方式

例如

func OpenTenant(){
    // 校驗基本租戶信息
    // 檢查租戶是否特權,完成權限分配
    // 檢查實際開戶的線路,分配各種租戶下的必備賬號
    // 完成各種系統的對接交互
    // 進行數據庫操作
    // 返回結果
}

對于一個基本的開戶流程,我們或許可以在代碼中看到第一步做什么,第二步又做什么,第三步... ,然而每一個大步驟下面還有各種小步驟,每一個小步驟也會有自己的復雜邏輯

雖然有了基本的封裝,但是使用的時候,可能還是會寫到哪,需要啥就去按需定義啥

最終就會看到一個函數上千行,讓你去閱讀和維護,你內心能不拒絕嗎嗎?

發現對模塊進行獨立封裝還是不太夠,代碼里面太多的冗余代碼,這個時候咱們就可以使用接口來做抽象

用接口來做抽象

使用接口來做抽象的話,相當于是提前考慮好這一類的業務需要去考慮哪些問題,需要注意哪些場景,需要實現哪一些接口

不同的對象各自去實現自己的內容就可以了,單獨去維護自己的對象

例如上面的 A 系統的開戶流程

// 開戶 interface{}
type OpenTenant interface{
   ValidateTenantInfo(xxx)xxx // 校驗基本租戶信息
   CheckPrivilege(xxx) xxx // 檢查租戶是否特權,完成權限分配
   CheckLine(xxx) xxx // 檢查實際開戶的線路
   ProcessNeccessaryAccount(xxx) xxx //分配各種租戶下的必備賬號
   ProcessNoticeMsg(xxx) xxx// 完成各種系統的對接交互
   AddTenant(xxx) xxx// 進行數據庫操作
}

這僅僅是一個 demo,對于一個開戶 interface{} 來說,A 系統可以去實現,B 系統仍然也可以去實現,各自完成自己的內容,例如這樣

圖片圖片

對于優化代碼的話,我們就可以將上述的一些實現步驟,放到這個接口中來即可

咱們定義接口,更多的是去規范流程和便于維護,這樣還可以讓我們的程序往高內聚低耦合方面去靠,不同的對象之間,完全是安全的,自己玩自己的一套,只不過遵循的規范是一樣的的

盡可能降低圈復雜度

圈復雜度也可以理解為條件復雜度,是一種用來衡量代碼復雜度的標準

例如一些沒有判斷語句的代碼,圈復雜度就是 1

如果是 if...else 那么圈復雜度就是 2 ,簡單的就可以理解為涉及到判斷條件的數量,那么就 +1

例如有這樣的代碼

func testDemo() {
    var op OpenTenant
    switch TenantType {
        case A:
            op = a.New()
        case B:
            op = b.New()
        case C:
            op = c.New()
        default:
           ...
    }
    op.ValidateTenantInfo()....
}

那么就如上demo ,來看,圈復雜度就是 4 ,其中有 3 個判斷條件和一個默認的正常順序,因此是 3 +1 = 4

這個時候,我們可以如何降低圈復雜度呢?

我們完全就可以使用表格的方式,訪問數據直接訪問表格就可以了,盡可能的減少這些判斷條件,例如我們就可以這樣來寫

var openTenantMap = map[string]openTenantObject{
    A: a.New(),
    B: b.New(),
    C: c.New(),
}
func testDemo(){
    op := openTenantMap[TenantType ]
    ...
    op.ValidateTenantInfo()
    ...
}

這種方式,是不是就可以將圈復雜度降低到 1 了呢?而且看起來也優雅了很多

總結

主要叮囑了我們維護和開發的時候,要重視封裝,重視抽象,重視降低圈復雜度

只要你用心去打磨,自然會變得越來越好

但是可別生搬硬套,畢竟一些定制化的需求,定制化的代碼你去做接口抽象是沒有啥意義的,一起加油吧,xdm

至此,本次就是這樣,希望能夠給你帶來一丁點幫助

歡迎點贊,關注,收藏

朋友們,你的支持和鼓勵,是我堅持分享,提高質量的動力

技術是開放的,我們的心態,更應是開放的。擁抱變化,向陽而生,努力向前行。

責任編輯:武曉燕 來源: 阿兵云原生
相關推薦

2020-12-30 09:20:27

代碼

2022-08-16 09:04:23

代碼圈圈復雜度節點

2019-10-14 17:00:14

前端代碼圈復雜度

2020-06-01 08:42:11

JavaScript重構函數

2024-06-05 09:35:00

2023-03-03 08:43:08

代碼重構系統

2024-07-30 10:55:25

2022-02-23 11:49:25

自動化云基礎設施

2022-05-28 16:08:04

前端

2011-06-07 10:30:54

2019-11-18 12:41:35

算法Python計算復雜性理論

2024-04-25 08:33:25

算法時間復雜度空間復雜度

2021-01-05 10:41:42

算法時間空間

2022-08-25 11:00:19

編程系統

2021-10-15 09:43:12

希爾排序復雜度

2009-07-09 10:45:16

C#基本概念復雜度遞歸與接口

2021-09-17 10:44:50

算法復雜度空間

2018-12-18 10:11:37

軟件復雜度軟件系統軟件開發

2015-10-13 09:43:43

復雜度核心

2019-12-24 09:46:00

Linux設置密碼
點贊
收藏

51CTO技術棧公眾號

国产亚洲精品av| 九色porny91| 日韩中文字幕综合| 麻豆久久婷婷| 一区二区欧美激情| 无需播放器的av| 超碰免费在线播放| 国产麻豆精品在线观看| 羞羞色国产精品| 色哟哟精品观看| 色999韩欧美国产综合俺来也| 亚洲私人黄色宅男| 精品国产一区二区三区日日嗨| √资源天堂中文在线| 日韩欧美1区| 欧美一级二级三级蜜桃| 欧美精品一区免费| 在线免费av网站| 成人一区二区三区在线观看| 18一19gay欧美视频网站| 亚洲国产av一区| 深夜福利一区| 欧美揉bbbbb揉bbbbb| 一区二区三区欧美在线| 五月婷在线视频| 精品一区二区日韩| 茄子视频成人在线| 久久久精品国产sm调教| 精品久久久久中文字幕小说 | 日韩乱码人妻无码中文字幕| av一区二区在线播放| 日韩精品一区二| 亚欧在线免费观看| 男人久久天堂| 最新国产精品久久精品| 欧美影视一区二区| 日韩在线视频免费| 国产精品18久久久久| 国产精品九九九| 色婷婷在线观看视频| 综合视频在线| 日韩中文字幕久久| 久久精品—区二区三区舞蹈| 久久中文资源| 欧美v亚洲v综合ⅴ国产v| 一级片视频免费观看| 国产在线天堂www网在线观看| 亚洲三级电影全部在线观看高清| 日韩精品久久久| 欧美成熟毛茸茸| 成人99免费视频| 动漫美女被爆操久久久| 97超视频在线观看| 青青草精品视频| 国产精品久久久久高潮| 亚洲免费在线观看av| 亚洲午夜av| 欧美高跟鞋交xxxxhd| 卡通动漫亚洲综合| 狠狠做深爱婷婷综合一区| 亚洲精品日韩久久久| 欧美熟妇精品黑人巨大一二三区| 国产精品xxx在线观看| 亚洲精品一区二区三区福利 | 屁屁影院ccyy国产第一页| 免费观看久久久久| 日韩理论片网站| 免费观看中文字幕| 69xxx在线| 亚洲午夜久久久久中文字幕久| 国产在线无码精品| 蜜桃传媒在线观看免费进入 | 国产成人精品777777| 免播放器亚洲| 国产精品久久久久久久久久东京| 日本一本在线观看| 美女尤物国产一区| 91久热免费在线视频| 99热这里只有精品66| 国产成人在线视频免费播放| 国产精品日韩二区| 亚洲欧洲综合在线| 久久久青草青青国产亚洲免观| 热舞福利精品大尺度视频| sese一区| 亚洲日本在线a| 国产一区二区三区小说| 国产精品论坛| 欧美在线不卡一区| 永久免费黄色片| 国产精品中文字幕制服诱惑| 亚洲欧美日韩网| 貂蝉被到爽流白浆在线观看| 一区二区三区四区在线观看国产日韩| 色综合久久久888| 久久人妻免费视频| 久久国产欧美日韩精品| 动漫3d精品一区二区三区| 美州a亚洲一视本频v色道| 中文字幕中文乱码欧美一区二区| 青青在线免费视频| 午夜影院在线观看国产主播| 91福利在线看| 97超碰人人看| 亚洲日产av中文字幕| 久久精品国产精品亚洲| 日韩欧美三级视频| 久久国产精品露脸对白| 精品不卡一区二区三区| 日本高清在线观看wwwww色| 亚洲成人中文在线| 久热精品在线观看视频| 日本成人精品| 在线日韩欧美视频| 久久视频免费在线观看| 老司机精品视频导航| 精品高清视频| 青春草视频在线观看| 欧美午夜一区二区三区免费大片| 无码人妻一区二区三区一| 激情综合网五月| 久久久亚洲欧洲日产国码aⅴ| 在线观看黄色网| 99精品热视频| 国产性生活免费视频| 国产成人免费| 亚洲日本中文字幕| 国产网友自拍视频| 国产麻豆精品在线| 亚洲一一在线| 日韩中文视频| 亚洲女人天堂色在线7777| 免费无遮挡无码永久在线观看视频| 日韩中文字幕区一区有砖一区 | 亚洲免费视频网| 中文字幕一区二区三区av| 国产免费一区二区三区视频| 911精品国产| 久久综合免费视频| 91超薄丝袜肉丝一区二区| 久久久久久久久久久99999| 97视频久久久| 999久久精品| 久久97精品久久久久久久不卡| 中文字幕一区二区免费| 久久精品夜色噜噜亚洲a∨| 国产中文字幕在线免费观看| а√中文在线天堂精品| 欧美激情欧美激情| 国产成人精品无码高潮| 亚洲女爱视频在线| 亚洲欧美日韩三级| 日韩欧美不卡| 成人www视频在线观看| 天堂地址在线www| 欧美日韩精品电影| 成人午夜免费影院| 六月丁香婷婷色狠狠久久| 亚洲免费不卡| 国产精品成人3p一区二区三区| 久久精品电影一区二区| 国产极品久久久| 亚洲自拍与偷拍| 黑人玩弄人妻一区二区三区| 亚洲黄色视屏| 久久久国产精品一区二区三区| 国产一二在线播放| 亚洲男女性事视频| 亚洲 小说区 图片区| 中文子幕无线码一区tr| 亚洲欧美日韩三级| 欧美二区视频| 国产一区二区久久久| 亚洲人体视频| 中国人与牲禽动交精品| 国产又粗又猛又爽又黄的| 亚洲人成网站色在线观看| 亚洲精品乱码久久久久久9色| 激情欧美丁香| 蜜桃麻豆91| 美女久久久久久| 欧美老女人性视频| 天堂资源中文在线| 偷拍一区二区三区四区| 亚洲国产日韩一区无码精品久久久| 日韩国产欧美在线视频| 国产免费一区二区三区四在线播放| 麻豆精品国产| 欧美性在线视频| 午夜视频成人| 精品久久五月天| www毛片com| 1区2区3区精品视频| 年下总裁被打光屁股sp| 日日夜夜一区二区| 国产在线视频综合| 欧美日韩久久精品| av观看久久| 国产综合色在线观看| 九九热精品视频国产| 男人天堂亚洲二区| 91麻豆精品国产91久久久久久久久| 国产午夜福利一区二区| 国产精品国产三级国产普通话蜜臀| 无码人妻丰满熟妇区毛片蜜桃精品| 久久婷婷一区| avav在线播放| 成人激情开心网| 好看的日韩精品视频在线| 国产亚洲人成a在线v网站| 性欧美xxxx视频在线观看| 91福利在线视频| 亚洲精品久久久久中文字幕欢迎你| 国产精品久久久久毛片| 色播五月激情综合网| 久久午夜无码鲁丝片| 国产精品国产三级国产普通话99| 搡老熟女老女人一区二区| 国产精品一级黄| 污视频免费在线观看网站| 国产日韩综合| 欧美中日韩在线| 伊人青青综合网| 日日夜夜精品网站| 免费av一区二区三区四区| 成人三级在线| 91久久青草| 国产精品wwwwww| 高h视频在线播放| 日韩中文字幕视频| 成全电影播放在线观看国语| 精品久久久久久久一区二区蜜臀| 亚洲中文无码av在线| 欧美高清在线一区二区| 性色av蜜臀av色欲av| 国产高清精品在线| 国产区二区三区| 丝袜脚交一区二区| 日韩久久久久久久久久久久| 欧美在线免费看视频| 粉嫩av免费一区二区三区| 精品一区二区三区中文字幕 | 精品国产一区二区亚洲人成毛片| 奴色虐av一区二区三区| 亚洲va国产va欧美va观看| av最新在线观看| 综合久久国产九一剧情麻豆| 亚洲一区视频在线播放| 99久久国产综合精品麻豆| 免费观看黄网站| 久久99国产精品久久| 苍井空浴缸大战猛男120分钟| 红桃视频国产精品| 国产曰肥老太婆无遮挡| 91精品久久久久久久蜜月| 亚洲欧洲一区二区| 波多野结衣在线观看一区二区三区| 国产伦精品一区二区三区免费视频| 国产成人久久精品一区二区三区| 国产精品视频久久久久| 久久三级毛片| 国产精品视频区| 在线一区视频观看| 国产主播欧美精品| 日韩综合久久| 91久久精品一区| 一区中文字幕| 国产成人亚洲欧美| 波多野结衣在线一区二区| 91精品国产自产在线| 狂野欧美xxxx韩国少妇| 国产中文字幕日韩| 国产精品一区二区三区四区在线观看 | 26uuu国产| 成人综合婷婷国产精品久久蜜臀 | 日韩三级在线播放| 欧美呦呦网站| 在线观看一区欧美| 91日韩欧美| 日本a级片在线观看| 中文字幕一区二区三三| 中文字幕乱码免费| 国产精品美女久久久浪潮软件| 亚洲 欧美 日韩 国产综合 在线| 在线亚洲激情| 天堂视频免费看| 国产精品一区久久久久| 一级少妇精品久久久久久久| 国产亚洲精久久久久久| 亚洲图片第一页| 亚洲人精品午夜| 久久国产视频精品| 欧美影片第一页| 国产精品呻吟久久| 亚洲国产高潮在线观看| 欧美日韩国产中文字幕在线| 国产一区二区黄| 香蕉视频在线看| 欧美精品18videos性欧| 精品91久久| 成人美女免费网站视频| 精品综合久久88少妇激情| 乱色588欧美| 日韩理论片av| 激情综合在线观看| 麻豆国产欧美日韩综合精品二区 | 警花观音坐莲激情销魂小说| 亚洲午夜黄色| 99热手机在线| 99九九99九九九视频精品| 国产精品密蕾丝袜| 亚洲欧美激情在线| 午夜久久久久久久久久影院| 91精品国产综合久久精品性色| 三级网站在线看| 蜜臀久久99精品久久久久久宅男| 碰碰在线视频| 成人网中文字幕| 国产精品片aa在线观看| 亚洲最新在线| 欧美全黄视频| 少妇黄色一级片| 成人激情黄色小说| 久久人妻无码aⅴ毛片a片app| 天天av天天翘天天综合网色鬼国产 | 国产精品50页| 欧美日韩中文国产| 黄色av免费观看| 色小说视频一区| av在线日韩| 国产精品一区二区在线观看| 青青草97国产精品麻豆| 欧美成人精品欧美一级乱| 国产精品夜夜嗨| 黄色片网站免费| 日韩欧美在线视频观看| 亚洲av无码乱码国产精品| 亚洲视频日韩精品| 最新欧美色图| 成人久久18免费网站漫画| 成人羞羞视频在线看网址| 欧美丰满熟妇xxxxx| 9人人澡人人爽人人精品| 四虎884aa成人精品| 欧美久久久久久蜜桃| 国产精品毛片一区二区三区四区| 久久久久久国产精品美女| 一区三区自拍| 草草草视频在线观看| 久久激五月天综合精品| 爱爱视频免费在线观看| 欧美少妇bbb| 成人精品一区| 国产精品白嫩初高中害羞小美女 | 熟妇高潮一区二区| 亚洲午夜一区二区| 国产夫妻在线观看| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 真人bbbbbbbbb毛片| 亚洲一二三区在线观看| 91亚洲国产成人久久精品麻豆| www.日韩免费| 欧美高清影院| 亚洲精品不卡| 日韩在线卡一卡二| a天堂中文字幕| 欧美日韩一区二区欧美激情| jizz视频在线观看| 国产精品一区电影| 在线观看国产精品入口| 99久久99精品| 亚洲精选视频免费看| 黑人精品一区二区| 91精品国产高清自在线| 精品在线播放| 九热视频在线观看| 国产精品免费看片| 亚洲不卡免费视频| 久久久久久亚洲精品| 九色丨蝌蚪丨成人| 成人在线观看a| 中文一区在线播放| 一二区在线观看| 欧美精品一区三区| 澳门成人av| 99热成人精品热久久66| 欧美激情中文字幕| 99精品在线看| 久久久精品国产亚洲| 日韩精品免费视频一区二区三区| 91成人综合网| 国产片一区二区| 国产一区二区三区中文字幕| 欧美国产第一页| 国产一区二区三区四区五区传媒| 亚洲高清免费在线观看| 亚洲成人高清在线| 理论视频在线| 91久久中文字幕| 日韩国产精品91|