日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

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

來源: 責編: 時間:2023-10-06 19:18:56 346觀看
導讀theme: Chinese-red本次主要是聊聊關于使用接口抽象和降低圈復雜度的方式工作中,難免會遇到老項目老代碼,不僅僅需要我們維護,可能還需要我們在原來的垃圾代碼上進行新增功能或者是進行優化調整例如現有的老代碼中關于用

theme: Chinese-red

本次主要是聊聊關于使用接口抽象和降低圈復雜度的方式Jgm28資訊網——每日最新資訊28at.com

工作中,難免會遇到老項目老代碼,不僅僅需要我們維護,可能還需要我們在原來的垃圾代碼上進行新增功能或者是進行優化調整Jgm28資訊網——每日最新資訊28at.com

例如Jgm28資訊網——每日最新資訊28at.com

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

這種情況,相信每個公司都會存在,畢竟過去的需求,過去的標準,放到現在來看,啥也不是Jgm28資訊網——每日最新資訊28at.com

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

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

首先咱們編碼前一定會去捋清楚基本的需求,設計,以及實現流程,對于需要用到的工具我們會對代碼結構進行分層Jgm28資訊網——每日最新資訊28at.com

例如一些與業務主邏輯沒有什么關聯的功能就可以獨立封裝,便于維護和使用,例如:Jgm28資訊網——每日最新資訊28at.com

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

盡可能的將這些單獨的功能模塊拆解出去,獨立出來,單獨維護Jgm28資訊網——每日最新資訊28at.com

對于那種沒有必要同步的功能,完全可以通過異步化來進行處理,異步的話相信你會很容易想到消息隊列來進行實現Jgm28資訊網——每日最新資訊28at.com

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

例如Jgm28資訊網——每日最新資訊28at.com

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

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

雖然有了基本的封裝,但是使用的時候,可能還是會寫到哪,需要啥就去按需定義啥Jgm28資訊網——每日最新資訊28at.com

最終就會看到一個函數上千行,讓你去閱讀和維護,你內心能不拒絕嗎嗎?Jgm28資訊網——每日最新資訊28at.com

發現對模塊進行獨立封裝還是不太夠,代碼里面太多的冗余代碼,這個時候咱們就可以使用接口來做抽象Jgm28資訊網——每日最新資訊28at.com

用接口來做抽象

使用接口來做抽象的話,相當于是提前考慮好這一類的業務需要去考慮哪些問題,需要注意哪些場景,需要實現哪一些接口Jgm28資訊網——每日最新資訊28at.com

不同的對象各自去實現自己的內容就可以了,單獨去維護自己的對象Jgm28資訊網——每日最新資訊28at.com

例如上面的 A 系統的開戶流程Jgm28資訊網——每日最新資訊28at.com

// 開戶 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 系統仍然也可以去實現,各自完成自己的內容,例如這樣Jgm28資訊網——每日最新資訊28at.com

圖片圖片Jgm28資訊網——每日最新資訊28at.com

對于優化代碼的話,我們就可以將上述的一些實現步驟,放到這個接口中來即可Jgm28資訊網——每日最新資訊28at.com

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

盡可能降低圈復雜度

圈復雜度也可以理解為條件復雜度,是一種用來衡量代碼復雜度的標準Jgm28資訊網——每日最新資訊28at.com

例如一些沒有判斷語句的代碼,圈復雜度就是 1Jgm28資訊網——每日最新資訊28at.com

如果是 if...else 那么圈復雜度就是 2 ,簡單的就可以理解為涉及到判斷條件的數量,那么就 +1Jgm28資訊網——每日最新資訊28at.com

例如有這樣的代碼Jgm28資訊網——每日最新資訊28at.com

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 = 4Jgm28資訊網——每日最新資訊28at.com

這個時候,我們可以如何降低圈復雜度呢?Jgm28資訊網——每日最新資訊28at.com

我們完全就可以使用表格的方式,訪問數據直接訪問表格就可以了,盡可能的減少這些判斷條件,例如我們就可以這樣來寫Jgm28資訊網——每日最新資訊28at.com

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

這種方式,是不是就可以將圈復雜度降低到 1 了呢?而且看起來也優雅了很多Jgm28資訊網——每日最新資訊28at.com

總結

主要叮囑了我們維護和開發的時候,要重視封裝,重視抽象,重視降低圈復雜度Jgm28資訊網——每日最新資訊28at.com

只要你用心去打磨,自然會變得越來越好Jgm28資訊網——每日最新資訊28at.com

但是可別生搬硬套,畢竟一些定制化的需求,定制化的代碼你去做接口抽象是沒有啥意義的,一起加油吧,xdmJgm28資訊網——每日最新資訊28at.com

至此,本次就是這樣,希望能夠給你帶來一丁點幫助Jgm28資訊網——每日最新資訊28at.com

歡迎點贊,關注,收藏

朋友們,你的支持和鼓勵,是我堅持分享,提高質量的動力Jgm28資訊網——每日最新資訊28at.com

技術是開放的,我們的心態,更應是開放的。擁抱變化,向陽而生,努力向前行。Jgm28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-12129-0.htmlGO 中優雅編碼和降低圈復雜度

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 【揭秘】JUC并發工具包底層機制探究,Unsafe原來這么強大!

下一篇: 前端必讀書籍推薦(2023年最新版)

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久久久久久一区| 午夜欧美大片免费观看| 国产最新精品精品你懂的| 国产曰批免费观看久久久| 黑丝一区二区| 亚洲人成艺术| 日韩写真在线| 午夜在线成人av| 久久综合伊人77777| 欧美激情五月| 国产欧美不卡| 亚洲国产欧美一区二区三区丁香婷| 99国产精品国产精品久久| 亚洲欧美激情一区二区| 久久久久看片| 欧美日韩国产一区| 国产精品揄拍一区二区| 亚洲国产日韩欧美| 亚洲香蕉在线观看| 久久夜色精品国产亚洲aⅴ| 欧美日韩国产在线观看| 国产一区二区三区久久精品| 亚洲理论电影网| 欧美伊人影院| 欧美日韩国产三级| 激情婷婷亚洲| 亚洲一区二区免费| 美女在线一区二区| 国产精品羞羞答答| 亚洲啪啪91| 欧美中文字幕在线观看| 欧美国产日韩a欧美在线观看| 国产欧美日韩一区二区三区在线观看| 亚洲第一区中文99精品| 午夜国产精品视频免费体验区| 欧美1区2区3区| 国产欧美大片| 一区二区欧美在线| 麻豆成人在线| 国产精品无人区| 亚洲精品色图| 久久久之久亚州精品露出| 国产精品美女主播| 亚洲日本无吗高清不卡| 久久精品国产99| 欧美午夜一区| 亚洲国产视频直播| 欧美专区福利在线| 国产精品久久久一区二区三区| 91久久夜色精品国产九色| 欧美一区二区三区四区高清| 欧美日韩在线精品| 久久精品日韩一区二区三区| 欧美三级视频在线观看| 在线观看视频免费一区二区三区 | 国产一区二区三区成人欧美日韩在线观看 | 国外成人免费视频| 亚洲欧美国产高清| 欧美精品18+| 伊人久久婷婷色综合98网| 午夜精品福利一区二区蜜股av| 欧美激情中文字幕在线| 一区二区在线免费观看| 欧美在线3区| 国产精品入口夜色视频大尺度| 99这里只有精品| 免费人成网站在线观看欧美高清 | 国产精品视频yy9299一区| 亚洲免费电影在线观看| 免费看的黄色欧美网站| 国内综合精品午夜久久资源| 欧美一区高清| 国产欧美一区二区精品性 | 亚洲欧美日本国产专区一区| 欧美日韩中国免费专区在线看| 亚洲人成在线观看| 欧美成人四级电影| 在线免费高清一区二区三区| 久久午夜av| 亚洲国产成人精品久久久国产成人一区| 久久国产主播| 国内精品视频一区| 久久av资源网| 国内精品久久久久影院薰衣草| 欧美在线观看一区二区三区| 国产日韩欧美亚洲| 欧美一区网站| 国产综合香蕉五月婷在线| 久久精彩免费视频| 极品日韩av| 美日韩精品视频免费看| 亚洲欧洲久久| 欧美日韩国产小视频| 在线视频日本亚洲性| 国产精品久久久久一区二区三区共| 亚洲永久精品大片| 国产视频精品网| 久久婷婷影院| 亚洲人成网站色ww在线| 欧美日一区二区在线观看| 亚洲一区二区三区久久| 国产精品揄拍一区二区| 久久久久久久一区二区| 亚洲精华国产欧美| 欧美日韩在线亚洲一区蜜芽| 亚洲在线中文字幕| 国产一区二区无遮挡| 老牛影视一区二区三区| 亚洲精品久久久久久下一站| 欧美视频一区| 欧美在线视频不卡| 亚洲第一页在线| 欧美视频日韩视频在线观看| 亚洲欧美中文日韩v在线观看| 国产中文一区二区| 免费永久网站黄欧美| 一区二区三区黄色| 国产欧美丝祙| 免费的成人av| 中文网丁香综合网| 国内成人自拍视频| 欧美极品在线视频| 亚洲一区二区三区免费观看| 国产香蕉久久精品综合网| 牛牛国产精品| 亚洲一级黄色片| 国内精品嫩模av私拍在线观看| 免费日本视频一区| 亚洲一线二线三线久久久| 国语自产在线不卡| 欧美精品亚洲精品| 小黄鸭精品aⅴ导航网站入口| 伊人久久婷婷| 国产精品高潮呻吟久久av黑人| 欧美中文在线观看| 亚洲精品免费在线观看| 欧美影院一区| 亚洲国产精品久久久久秋霞不卡| 国产精品白丝av嫩草影院| 久久九九久久九九| 一区二区欧美国产| 国产一区91| 欧美日韩精品免费观看| 久久国产精品免费一区| 亚洲伦理精品| 国产一区二区三区久久久| 欧美精品一卡二卡| 久久国产成人| 亚洲天堂成人在线观看| 亚洲国产高清一区| 国产片一区二区| 欧美日韩1区2区3区| 久久久久久久91| 中日韩男男gay无套| 在线观看一区二区精品视频| 国产精品久久一区主播| 欧美va亚洲va香蕉在线| 欧美在线视频二区| 亚洲视屏在线播放| 亚洲国产欧美日韩精品| 国产视频一区在线| 欧美视频中文字幕| 麻豆精品网站| 性欧美1819sex性高清| 9人人澡人人爽人人精品| 樱桃成人精品视频在线播放| 国产精品在线看| 欧美日韩精品免费观看视频完整| 久久久免费av| 午夜日韩电影| 这里只有精品视频| 亚洲精品在线观| 在线观看亚洲| 国内一区二区三区| 国产精品日韩| 欧美视频日韩| 欧美久久电影| 欧美成人综合| 看片网站欧美日韩| 久久久久久网站| 欧美一区视频在线| 亚洲欧美日韩国产一区| 国产精品99久久久久久久久| 亚洲精品极品| 亚洲激情电影在线| 在线欧美日韩精品| 黄色日韩网站| 好吊一区二区三区| 国产有码一区二区| 国产日韩欧美在线播放| 国产精品免费看片| 国产精品高清一区二区三区| 欧美日韩网址| 欧美日韩www| 欧美激情第六页| 欧美国产精品va在线观看| 麻豆成人在线播放| 久久综合九九| 久久免费国产精品| 久久精品盗摄| 欧美在线三级| 久久久久国产精品厨房| 久久国产欧美日韩精品| 久久激情视频|