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

垃圾代碼和優質代碼的區別?

開發 后端
在這一篇文章里面,我們首先以兩個優化代碼的具體實例為引子,讓大家明白了一些業務代碼的優化思路。從列舉了一些其他可能出現的錯誤,以及是優化代碼的思想準備和理論指導。

幾個業務場景中的重構示例

請求順序依賴

在這種場景中,首先還是業務的復雜度決定了代碼的復雜度。首先我們來看一個在前端和node都有可能出現的一個簡單的例子:

我們有 A, B, C, D 四個請求獲取數據的函數(函數自己實現), C 依賴 B 的結果,D 依賴 ABC 的結果,最終輸出 D 的結果。

錯誤示例 

 

雖然這個代碼是故意寫成這樣的,不過確實也有在一些初學者身上看到過。這份代碼還是能正確給出結果的,但是寫法丑陋,回調地獄。如果后來人不進行重構,還有請求依賴,得繼續回調嵌套。性能太差,沒有考慮 A 和 B 實際上是可以并發的。

這里介紹了一下最原始的 callback ... 中間大家可以去回顧一下 整個 ES2015+ ,callback (async.js) --> Promise --> generator + co --> async + await 的進化過程。其實是從原生的語法層面不斷去簡化和增強我們對于異步的控制能力。

下面直接給目前階段原生提供的終極方案:基于 Promise + async/await

正確示例 

 

我們重新思考了一下上面的問題,理清楚了邏輯順序的依賴。并且用最新的語法。

使用 Promise.all 結合 async/await 的形式,考慮了并發和串行,寫法簡潔,達到了在示例要求下的最快方案。解決了無限嵌套的問題。這是跟隨語言進化本身帶給我們可以進行的優化。

但又不僅僅如此。我們將問題進行歸類 將 B,C 有依賴順序的請求,抽離出單獨的函數。讓他們去處理自身的邏輯。這個點我們稍后再提。

折磨人的 if else

可能存在下面一些問題

  1. 過多的嵌套
  2. 邏輯處理冗余
  3. 沒有做好防御編程(錯誤處理

直接來一個代碼例子,這是一個獲取背景顏色的方法,但是隨著業務的不斷變化,背景顏色的來源越來越多,在一些業務人員的處理下可能是這樣的:

錯誤示例

 

相信你在讀上面的代碼的時候是極為痛苦的,想要一目了然的知道最終會進入哪個分支,基本不可能。于是基于下面兩個原則

  • 合理的抽取成函數
  • 錯誤優先返回

有了一個基礎版本的重構:

正確示例 

 

可以看到整個邏輯,經過了重新梳理。拆分成了三個函數,子方法分別去處理對應層級的邏輯,由一個主方法負責調度。整體都變得一目了然了。

當然,在我們基于上面的原則進行重構之后,這個代碼有沒有問題呢?當然有。可以看到我們這三個函數,都依賴了全局變量。函數本身就不純了。如果是全局的問題,還是不易于排查。

我們可以將其修改為純函數,讓這一份代碼易于理解和測試。

以一個函數的修改為示例:我們將 全局變量變成了參數,只需要在調用的時候,將全局變量傳入即可,但是這樣,我們得到了一個純函數。 

 

為什么會在這里特別強調這個點呢,其實在函數式編程中的一個最基礎的問題那就是純函數。只有這樣輸入輸出才是可被觀測的,一個輸入一定會有一個輸出。也只有通過這樣的方式,才能讓系統中非純的函數越來越少。讓代碼變得更易于測試。

當然作為我們如果以重構的角度去思考的話,我們還需要關注到這個點: 

 

這里的邏輯會將會 最后一個被匹配到的數據,設置為 bgColor 。(我們都知道 find indexOf 等基本都是從前匹配。)是否真的是業務的需求呢?

可以看到將業務代碼寫好/重構的過程中其實也是對業務邏輯和業務理解的再一次提升。不論是抽取成函數還是錯誤優先返回的設計,這其實也都是可以解決這樣一個問題:能在不去讀懂全局的情況下,了解某一個區域的細節邏輯,也就做到了讓代碼易于理解和修改。

... 這里的代碼即便是經過這樣的重構后,依然有可以考慮進一步優化的空間,比如函數與參數的命名,完整的測試用例等等,受限于文章篇幅,暫不展開說明。

一些代碼中可能存在的其他問題

1.邏輯耦合在視圖層。

 

  1. a === 'a' && b ==='b' && c==='c' && d ==='d'? <div>...</div>:null  

2.組件復用,函數復用,不封裝,代碼重復。

3.函數功能不單一,一個函數處理太多職責。且這些職責沒有任何關聯,但是都耦合在同一個區塊內。

4.參數列表混亂,有做好防御編程,不處理錯誤(接口錯誤,超時,重復提交等等

5.魔法數字,魔法字符串,且沒說明。

6.糟糕數據結構 / 糟糕命名 (其實上面的具體代碼示例也存在)

關于優化代碼的思想準備

首先來說一下為什么會說需要優化代碼?

  1. 技術追求。
  2. 公司要求,線上有系統在用。有用戶在用,不寫好出問題實際上苦的還是自己。
  3. 團隊協作,我不好好寫,團隊成員其他人也不好好寫,惡性循環苦的還是自己。
  4. 快速迭代。系統需要不斷的增加新功能。必須要寫好代碼才能做到。
  5. 其他人的看法,怕別人覺得自己技術能力差... xxxx....

那么就會有下面這些要求:

  1. 易于理解系統的架構
  2. 易于理解系統的生命周期與執行流程
  3. 易于理解每一個函數的作用
  4. 易于理解函數之間是如何調用與傳遞的(輸入輸出)
  5. 易于理解變量的含義,表達式的含義。
  6. 易于擴展...

最終實際上又回到了寫出來的代碼應該是 整潔的代碼,要使代碼易于理解/修改/測試。(這里其實大部分時候,都隱含了一個人員協作的條件在里面,所以,既要寫好代碼,又不能過度封裝,讓團隊其他成員看不懂(當然如果確實有些人經驗不夠,那么是他自身的問題,需要他自己去加強。))

一些建議

  1. 更加清晰的去了解業務,去思考可能的變化。思考和設計清楚再動手。
  2. 看一些開源項目與業界最佳實踐,明白什么樣的是好代碼,什么樣的是不好的代碼。
  3. 建立明白代碼雖然是給計算機運行的,但最終還是人看的。不僅僅是沒有 bug 就行了,這樣的心智模型。
  4. 建立業務與代碼質量同等重要的思考模型。避免因為時間導致的不得不這么寫的代碼。
  5. 明白 code review 本身可能能發現和指出來一些問題,但最終的落實還的靠自己,不能變成形式,而是需要融合成自身的思考。
  6. 使用錯誤優先原則。盡可能的讓出錯的先返回, 這樣后面就會得到干凈的代碼。(寫代碼的時候,不僅僅正向,反向的判斷也需要思考)
  7. 合理的拆分成獨立的函數。明確輸入輸出,錯誤處理等在函數內部的處理。(比如在一些場景中確實會存在大量邏輯判斷,首先就要思考在判斷內部的語句是否能被歸類與拆分出去)
  8. 對于多種狀態的判斷與組合,可以使用 組合狀態表 (map表)狀態機等模式
  9. 學習設計模式與重構等相關知識。
  10. 重構!!只要你覺得這個地方有問題了,那就不要等到以后。以后往往就是再也不。

結束

說到這可能會有一種戛然而止的感覺。在這一篇文章里面,我們首先以兩個優化代碼的具體實例為引子,讓大家明白了一些業務代碼的優化思路。從列舉了一些其他可能出現的錯誤,以及是優化代碼的思想準備和理論指導。其實都是希望大家能夠在業務中去發現問題,再去思考如何解決問題,說了那么多,到底能不把代碼寫好,還是得靠自己~ 

 

責任編輯:龐桂玉 來源: 養碼場
相關推薦

2009-06-08 10:42:24

2009-07-14 16:02:04

SWT和Swing

2017-09-14 12:45:35

2015-09-28 09:17:43

代碼可閱讀代碼質量

2009-12-04 09:00:05

PHP垃圾代碼

2020-09-11 10:40:50

低代碼無代碼開發

2020-11-18 17:51:35

代碼編程語言

2021-03-26 10:05:25

\n\rLinux

2020-05-06 19:57:09

代碼開發編碼

2020-11-17 22:28:30

移動開發

2022-05-07 10:01:20

好代碼壞代碼

2017-05-31 14:14:11

互聯網

2017-06-07 11:55:27

互聯網

2024-05-23 12:09:01

2020-06-05 14:48:11

零代碼低代碼開發

2023-11-13 08:34:01

Java編程習慣

2020-05-27 10:38:16

開發代碼技巧

2024-02-22 10:27:00

Python開發

2023-09-25 09:31:25

云架構無代碼開發

2021-10-15 10:26:56

代碼項目Mapper
點贊
收藏

51CTO技術棧公眾號

亚洲免费久久| 日韩视频一区二区三区在线播放免费观看| 日韩高清欧美激情| 欧美一级专区免费大片| 国产97人人超碰caoprom| 极品粉嫩美女露脸啪啪| 亚洲 美腿 欧美 偷拍| 先锋资源久久| 欧美性色aⅴ视频一区日韩精品| 国产精品久久久久久免费观看| 污污视频网站在线免费观看| 性欧美18xxxhd| 国产盗摄精品一区二区三区在线| 一区三区二区视频| 熟女性饥渴一区二区三区| 亚洲黄色a级片| 欧美一区激情| 欧美久久久久久久久中文字幕| 欧美日韩系列| 久久不卡免费视频| 老司机精品视频在线播放| 亚洲精品免费看| 91精品视频在线播放| 大胸美女被爆操| 影视一区二区三区| 国产丝袜欧美中文另类| 国产大片精品免费永久看nba| 添女人荫蒂视频| 亚洲人成在线网站| 亚洲欧洲无码一区二区三区| 国产精品一二三在线| 欧洲性xxxx| 久久影视三级福利片| 欧美日韩国产经典色站一区二区三区| 日韩精品福利视频| 中文无码精品一区二区三区| 区一区二视频| 欧美日韩一区二区电影| 亚洲最新免费视频| 国产成人无码一区二区在线播放| 欧美黑人巨大videos精品| 精品美女国产在线| 欧美日韩亚洲在线| www.97超碰| 亚洲看片一区| 国产性色av一区二区| 在线观看av网页| 成人日韩欧美| 国产精品大片免费观看| 欧美精品一区二区蜜臀亚洲| 99精品人妻少妇一区二区| 精品电影在线| 国产一区二区中文字幕| 久久久久久久一区二区三区| 免费看黄色aaaaaa 片| 99这里只有精品视频| 精品国产91久久久久久| 欧美精品久久久久久久自慰| 精品av中文字幕在线毛片| 9久草视频在线视频精品| 国产精品 欧美在线| 800av免费在线观看| 亚洲高清激情| 色悠悠久久久久| 久久精品无码专区| 色噜噜国产精品视频一区二区| 国产成人精品无码播放| 成人三级黄色免费网站| 国产一区二区精品在线观看| 国产美女久久久| 亚洲综合精品视频| 伊人狠狠色j香婷婷综合| 欧美大奶子在线| 美国黄色a级片| 尤物tv在线精品| 日韩亚洲欧美综合| 黄色av免费在线播放| 四季久久免费一区二区三区四区| www国产成人| 亚洲一区二区三区乱码aⅴ| 日本午夜视频在线观看| 国产精品日本| 久久97精品久久久久久久不卡| 瑟瑟视频在线观看| 91蝌蚪精品视频| 亚洲精品大尺度| 欧美体内she精高潮| 精品3atv在线视频| 欧美在线影院一区二区| 日韩精品xxxx| 女人天堂av在线播放| 国产精品乱码妇女bbbb| 蜜桃麻豆91| 欧美一级在线免费观看| 国产呦萝稀缺另类资源| 99精品国产一区二区| 亚洲一区二区视频在线播放| 国产在线精品一区二区不卡了| 亚洲一区二区三| 日韩一卡二卡在线| 欧美韩日一区二区三区| 精品国产免费人成电影在线观... 精品国产免费久久久久久尖叫 | 国产91精品在线观看| 国产精品com| 97国产精品久久久| 日韩1区2区3区| 欧美一级视频免费在线观看| 欧美黑人性猛交xxx| 手机亚洲手机国产手机日韩| 亚洲一区二区久久久| 精品自拍偷拍视频| 美女诱惑黄网站一区| 91精品国产高清| 国产无码精品一区二区| 国产精品a级| 欧美精品www| 日韩欧美国产另类| 日韩专区在线视频| caoporen国产精品| 1769在线观看| 亚洲日本韩国一区| 成人在线观看毛片| 日韩影视在线| 欧美日韩精品电影| 中文字幕丰满乱子伦无码专区| 色先锋久久影院av| 亚洲午夜av久久乱码| 国产真实夫妇交换视频| 九九视频精品免费| 亚洲www视频| 成人资源www网在线最新版| 午夜精品福利久久久| 黄色网zhan| 青草在线视频在线观看| 欧美午夜理伦三级在线观看| 欧美大喷水吹潮合集在线观看| 久久影视三级福利片| 久久影视免费观看| 九九热国产精品视频| 国产综合婷婷| 国产欧美中文字幕| jizz中国女人| 91在线免费视频观看| 日韩av大全| 日韩精品专区| 欧美一区二区三区视频免费播放| 日韩毛片无码永久免费看| 久久精品高清| 国产精品户外野外| 国产精品人人爽| 成人va在线观看| 日本一区二区精品视频| 黄页视频在线播放| 精品久久久一区二区| 国产精品成人无码专区| 亚洲国产黄色| 国外成人在线视频网站| 毛片网站在线| 亚洲男人的天堂在线观看| 日本一道本久久| 婷婷激情成人| 日韩精品免费综合视频在线播放 | 国内精品不卡在线| 成人av蜜桃| 后进极品白嫩翘臀在线播放| 日本道色综合久久| 999热精品视频| 蜜桃久久久久| 91av视频在线免费观看| 韩国中文字幕hd久久精品| 久久久久久久综合狠狠综合| 日本精品免费视频| 日韩av综合| 中文字幕精品网| 国产精久久久久久| 91一区二区在线| mm1313亚洲国产精品无码试看| 欧美日韩国产一区二区三区不卡| 欧美黑人又粗大| 91tv国产成人福利| 成人欧美一区二区三区视频网页 | 熟妇熟女乱妇乱女网站| 国语精品视频| 亚洲一级黄色av| 亚洲一卡二卡在线| 亚洲激情第一区| av无码一区二区三区| 综合在线一区| 国产一区自拍视频| 日韩不卡视频在线观看| 欧美mv和日韩mv的网站| 97在线观看视频免费| 久久美女性网| 久久99精品国产一区二区三区| 国产日产一区二区三区| 亚洲成成品网站| 欧美黄色免费看| 91一区二区在线观看| 欧美日韩中文不卡| 欧美三级美国一级| 亚洲永久免费观看| 欧美三级网址| 欧美激情一级二级| 福利在线午夜| 在线免费不卡视频| 久草视频在线资源站| 久久精品视频免费| 国产一级二级av| 欧美永久精品| 欧洲精品亚洲精品| jazzjazz国产精品久久| 国产精品黄视频| 国产网红女主播精品视频| 在线成人一区二区| 色呦呦视频在线| 欧美日韩精品在线播放| 日本一级片在线播放| 久久精品久久精品| 亚洲一区精品视频| 日本国产一区| 日本欧美中文字幕| 欧美videos另类精品| 最近日韩中文字幕中文| 四虎在线视频| 91黄色免费观看| 日本熟女一区二区| 99精品偷自拍| 中国老熟女重囗味hdxx| 免费欧美日韩国产三级电影| 一区二区三区电影| 要久久爱电视剧全集完整观看| av电影成人| 国产精品99久久免费| 欧美另类交人妖| 无遮挡动作视频在线观看免费入口| 欧美裸体一区二区三区| 精品成人无码久久久久久| 国产精品久久毛片| 中文字幕第4页| 久久精品噜噜噜成人av农村| 熟女少妇精品一区二区| 亚洲综合日韩| 亚洲一区三区| 色综合久久一区二区三区| 亚洲精品免费网站| 日韩综合av| 国产日韩欧美日韩大片| 丁香久久综合| 欧美第一黄网免费网站| 国产福利在线播放麻豆| yellow中文字幕久久| 国产91免费在线观看| 日韩美女在线视频| 欧美黄色一级大片| 色综合天天做天天爱| 日本 欧美 国产| 国产精品国产三级国产三级人妇| av在线天堂网| 奇米影视在线99精品| 国产又猛又黄的视频| 女人香蕉久久**毛片精品| 欧美另类videos| 欧美三级黄美女| 草草视频在线免费观看| av资源久久| 亚洲永久激情精品| 久久精品影视| 性一交一乱一伧国产女士spa| 亚洲激情亚洲| 免费在线激情视频| 日韩av网站在线观看| 黄色一级片免费的| 亚洲欧美卡通另类91av| 欧美韩国日本在线| 久久精品国产亚洲aⅴ| 香蕉视频xxxx| 成人18视频日本| 国产亚洲精品熟女国产成人| 中文字幕一区二区三区乱码在线 | 岛国视频午夜一区免费在线观看| 毛片基地在线观看| 欧美怡红院视频| 99久久精品国产一区色| 色噜噜狠狠成人中文综合 | 欧美一区二区三区播放老司机| 国产sm主人调教女m视频| 亚洲精品乱码久久久久久金桔影视 | 日韩欧美一级二级三级久久久| 婷婷在线免费观看| 伊人激情综合网| 欧美videosex性欧美黑吊| 日本精品久久久| 密臀av在线| 国产成人精品综合| 欧美高清hd| 欧美精品v日韩精品v国产精品| 日韩美女一区二区三区在线观看| 成年人视频大全| 天堂蜜桃91精品| 成人做爰69片免费| 国产欧美一区二区精品性| 免费看一级一片| 欧美亚洲尤物久久| 欧美视频久久久| 按摩亚洲人久久| 婷婷六月国产精品久久不卡| 亚洲最大av网站| 成人久久久久| 日韩欧美在线播放视频| 国产精品亚洲人在线观看| 中文字幕第22页| 久久一区二区三区国产精品| 少妇毛片一区二区三区| 亚洲人成影院在线观看| 欧产日产国产69| 欧美成人a∨高清免费观看| 岛国大片在线观看| 国内免费久久久久久久久久久| 日本一本在线免费福利| 国产精品久久久久久av福利软件| 国产三级精品三级在线观看国产| 国产精品日韩欧美一区二区| 日韩三级在线| 日韩欧美精品在线观看视频| 高清不卡在线观看| 老司机成人免费视频| 亚洲精品第一国产综合野| 中文亚洲av片在线观看| 亚洲欧美色图片| 午夜老司机在线观看| 欧洲永久精品大片ww免费漫画| 1204国产成人精品视频| 精品久久久久久一区| 欧美日本不卡| 欧美一级小视频| 国产精品免费看片| 一级久久久久久| 亚洲欧美福利视频| 特黄毛片在线观看| 国产原创精品| 亚洲激情欧美| 性活交片大全免费看| 亚洲一区国产视频| 久久久精品视频网站| 亚洲精品第一国产综合精品| 国产盗摄在线视频网站| 91久久国产自产拍夜夜嗨| 欧美美女在线直播| 国产精品www在线观看| 国产aⅴ精品一区二区三区色成熟| 九九热最新地址| 91精品国产福利在线观看| 国产剧情在线| 91精品国自产在线观看| 欧美在线资源| 亚洲女人在线观看| 亚洲精品成人精品456| www.中文字幕| 午夜精品久久久99热福利| 经典三级一区二区| 奇米影视首页 狠狠色丁香婷婷久久综合| 亚洲中字在线| 精品一区二区三区蜜桃在线| 欧美三级日韩三级| 黄网站视频在线观看| a级国产乱理论片在线观看99| 亚洲精品一级| 国产精品毛片一区二区| 欧美性猛交xxxx乱大交退制版 | 91丨porny丨在线中文 | www.xxxx日本| 日韩精品一区二区三区视频播放| 男人天堂亚洲天堂| 精品日本一区二区| 日韩不卡一区二区| 国产suv一区二区三区| 亚洲二区在线播放视频| 中文字幕这里只有精品| 91pron在线| 国产日韩1区| 国产精品久久久久久成人| 欧美一区二视频| 韩国精品一区| yy111111少妇影院日韩夜片| 亚洲精品欧美| avhd101老司机| 日韩精品在线一区二区| 三级在线看中文字幕完整版| 成人动漫视频在线观看免费| 国产精品久久久一区二区| 蜜桃av免费观看| 精品少妇一区二区三区视频免付费| 三妻四妾的电影电视剧在线观看| 亚洲春色在线视频| 成人午夜视频免费看| 国产探花在线免费观看| 日韩成人免费视频| 四虎在线精品| 久热免费在线观看| 亚洲黄色片在线观看|