精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

人人人妻人人澡人人爽欧美一区| 一区二区三区四区在线视频| 日本三级欧美三级| 曰本一区二区三区视频| 欧美视频第二页| 2022中文字幕| 久蕉依人在线视频| 激情综合色播激情啊| 久久久久久久色| 天天舔天天操天天干| 一区二区三区四区精品视频| 色综合久久中文综合久久97| 国产日产欧美一区二区| 天天操天天干天天舔| 久久精品国产免费| 欧亚精品中文字幕| 欧美黑吊大战白妞| 欧美日韩性在线观看| 亚洲第一精品久久忘忧草社区| 日日摸天天爽天天爽视频| 2024短剧网剧在线观看| 国产日韩欧美不卡| 久久av一区二区| 国产视频手机在线观看| 日韩精品一二三四| 高清欧美一区二区三区| 亚洲色偷偷综合亚洲av伊人| 九一精品国产| 亚洲精品乱码久久久久久金桔影视| 色一情一区二区三区| 激情开心成人网| 亚洲动漫第一页| av磁力番号网| 午夜视频在线观看网站| 久久亚洲精品小早川怜子| 国产福利久久精品| 99精品在线视频观看| 捆绑变态av一区二区三区| 日本中文字幕久久看| 久热这里只有精品6| 在线免费观看欧美| 欧美老女人性生活| 黄色香蕉视频在线观看| 日韩dvd碟片| 在线看日韩欧美| 国精产品一区二区三区| 婷婷精品在线| 日韩精品在线第一页| 亚洲av成人片色在线观看高潮 | 一区二区理论电影在线观看| 香蕉久久免费影视| 成人动漫在线播放| 国产精品欧美经典| 伊人av成人| 日本高清在线观看wwwww色| 亚洲欧洲日韩在线| 樱空桃在线播放| 亚洲婷婷噜噜| 亚洲国产精品一区二区久久恐怖片 | 国产日韩成人内射视频| 免费电影日韩网站| 在线区一区二视频| 最新国产黄色网址| 日韩中文字幕视频网| 日韩欧美一卡二卡| 一本色道久久hezyo无码| 国产极品模特精品一二| 日韩国产高清视频在线| 亚洲av无码一区二区三区人| 国产探花在线精品| 色婷婷**av毛片一区| 精品国产视频在线观看| 欧美 日韩 国产一区二区在线视频 | 日本美女一区二区| 国产欧美亚洲精品| 亚洲黄色在线播放| 91丨porny丨最新| 神马影院我不卡| 麻豆视频网站在线观看| 亚洲尤物在线视频观看| 国产成人a亚洲精v品无码| 精品欧美日韩精品| 亚洲特级毛片| www.日韩.com| 国产一级特黄毛片| 久热re这里精品视频在线6| 国产精品视频免费在线观看| 精品久久无码中文字幕| 久久男人中文字幕资源站| 亚洲在线视频一区二区| 91豆花视频在线播放| 91国产精品成人| 在线免费黄色小视频| 日本亚洲不卡| 中文字幕欧美日韩在线| 久青草免费视频| 日韩av在线发布| 99中文字幕| 国产鲁鲁视频在线观看免费| 亚洲精品免费在线播放| 可以免费在线看黄的网站| 精品视频在线观看免费观看| 亚洲精品之草原avav久久| 希岛爱理中文字幕| 久久精品系列| 国产一区免费在线| av网址在线播放| 日本乱人伦aⅴ精品| 欧美图片自拍偷拍| 98精品视频| 日韩av电影免费观看高清| 亚洲成人第一区| 中文字幕日韩一区| 日本成人中文字幕在线| 成人免费在线电影网| 久久精品国产成人精品| 成人小视频在线播放| 成+人+亚洲+综合天堂| av中文字幕av| 国产精品1区| 中文字幕欧美在线| 久操视频在线免费观看| www欧美成人18+| 青青青国产在线观看| 一区二区日韩| 欧美福利小视频| 国产喷水吹潮视频www| 欧美韩国一区二区| 又色又爽又高潮免费视频国产| 99久久婷婷国产综合精品青牛牛| 久久人人爽亚洲精品天堂| 在线免费观看av网址| 久久综合九色欧美综合狠狠| 欧美精品久久久久久久自慰 | 欧美三级在线看| 性欧美丰满熟妇xxxx性仙踪林| 亚洲美女视频在线免费观看| 成人欧美一区二区三区在线观看 | 97视频在线播放| 狠狠综合久久av一区二区| 亚洲精品中文字幕在线观看| 中文字幕视频三区| 国产精品久久久久无码av| 国产精品一区二区三区久久| 欧美午夜黄色| 日本精品免费观看高清观看| 无码少妇精品一区二区免费动态| 久久久久久9| 日韩精品久久一区二区三区| 日本精品网站| 中文字幕在线亚洲| 97人妻精品一区二区三区软件 | 久久精品国产av一区二区三区| 国产成人免费在线视频| 一二三四视频社区在线| 日韩成人av在线资源| 欧美一区二区三区精品电影| 免费黄色片在线观看| 在线观看亚洲成人| 天堂网av2018| 国产精品原创巨作av| 亚洲中文字幕无码一区二区三区| 国产成人av毛片| 51视频国产精品一区二区| 高清日韩av电影| 91精品国产91久久久久久一区二区| 欧美色视频一区二区三区在线观看 | 97精品视频在线| 男生女生差差差的视频在线观看| 日本韩国视频一区二区| 91免费在线看片| 国产成人在线看| 久久久久狠狠高潮亚洲精品| 成久久久网站| 999在线观看免费大全电视剧| а√天堂8资源在线| 国产亚洲成av人片在线观看桃| 中文字幕在线观看精品| 一区二区三区免费看视频| 国产精品久久久久久久无码| 日本强好片久久久久久aaa| 日本福利视频导航| 美女视频免费精品| 国产精品中文字幕久久久| 污视频网站在线免费| 日韩精品黄色网| 国产农村老头老太视频| 亚洲一区二区在线播放相泽| 国产又粗又猛又爽视频| 国内久久婷婷综合| 日韩免费视频播放| 五月天久久777| 久久视频在线观看中文字幕| 成人av在线播放| 欧美专区在线播放| av免费在线网站| 在线播放亚洲激情| 人妻精品一区一区三区蜜桃91| 欧美亚洲动漫精品| 国产污片在线观看| 国产精品区一区二区三区| 香港三日本8a三级少妇三级99| 美腿丝袜一区二区三区| 日韩在线综合网| 中文无码久久精品| 亚洲 日韩 国产第一区| 极品国产人妖chinesets亚洲人妖| 国产日韩在线观看av| 裤袜国产欧美精品一区| 久久久人成影片一区二区三区观看| 亚洲免费视频一区二区三区| 亚洲精品电影在线| 99久久久国产精品无码免费| 欧美三区在线观看| 久草手机在线观看| 亚洲午夜私人影院| 婷婷伊人五月天| 中文字幕一区在线观看| 欧洲美一区二区三区亚洲| k8久久久一区二区三区| 性高潮久久久久久| 久久国产精品露脸对白| 国产免费999| 欧美亚洲免费| 97超碰青青草| 亚洲精品色图| 国产av人人夜夜澡人人爽麻豆 | 免费观看日韩毛片| 亚洲高清免费| 国产毛片久久久久久国产毛片| 午夜精品视频一区二区三区在线看| 免费观看成人在线| 丝袜美腿综合| 久久一区二区三区欧美亚洲| 久本草在线中文字幕亚洲| 国产精品对白一区二区三区| 日韩免费一级| 97久久精品午夜一区二区| 欧美.com| 成人欧美一区二区三区视频| 中文字幕一区二区三区日韩精品| 翡翠波斯猫1977年美国| 999久久精品| 极品校花啪啪激情久久| 三级精品视频| 日韩av电影免费播放| 成人午夜av| 一区二区三区av在线| 久久久久久久久久久妇女| 美国av在线播放| 欧美日韩免费观看一区=区三区| 日韩在线视频在线| 亚洲精选在线| 精品99在线视频| 日韩精品三区四区| 欧美美女性视频| 国产美女在线观看一区| 国产麻豆剧传媒精品国产| 成人免费视频网站在线观看| 欧亚乱熟女一区二区在线| 91美女片黄在线| a级在线免费观看| 久久久91精品国产一区二区三区| 91麻豆精品国产91久久综合| 综合电影一区二区三区 | 狠狠色狠色综合曰曰| 色av性av丰满av| 欧美日韩在线免费视频| 国产丰满果冻videossex| 亚洲国产精品一区二区三区| 成人激情电影在线看| 久久成人精品视频| 久久青草伊人| 国产欧美久久久久久| 在线播放一区二区精品视频| 久久视频在线观看中文字幕| 999精品在线| 日本福利视频一区| 日韩二区三区在线观看| 中文字幕第三区| av电影在线观看完整版一区二区| 国产主播av在线| 一区二区三区精品在线| 无码任你躁久久久久久久| 欧美精品乱码久久久久久按摩| 秋霞网一区二区| 中文字幕免费精品一区| av中文在线资源库| 国产男人精品视频| 日本天堂一区| 麻豆视频传媒入口| 日日夜夜精品视频天天综合网| 992kp免费看片| 久久久国际精品| 国产性70yerg老太| 欧美日韩一区二区三区四区 | 夜夜躁日日躁狠狠久久88av| 日本性爱视频在线观看| 国产精欧美一区二区三区| 伊人精品久久| 手机成人在线| 国产欧美激情| 国产成人精品综合久久久久99| 欧美国产日本韩| 日本三级黄色大片| 日韩色在线观看| av每日在线更新| 91国产视频在线播放| 日韩在线亚洲| 一区二区三区四区久久| 三级在线观看一区二区| 一边摸一边做爽的视频17国产 | 国产成人三级视频| 日韩有码一区二区三区| 国产精品福利导航| 一区二区三区精品在线观看| 6—12呦国产精品| 一区二区欧美激情| 日韩免费电影| 久久亚裔精品欧美| 亚洲黑丝一区二区| 人妻激情偷乱视频一区二区三区| 国产精品美女久久久久久2018| 欧美日韩一级黄色片| 亚洲激情免费观看| 青草av在线| 99久久国产免费免费| 国产精品99久久精品| 久久婷婷综合色| 国产欧美日韩精品一区| 国产精品第5页| 亚洲免费福利视频| 最近高清中文在线字幕在线观看1| 国产精品一区二区欧美| 狠狠色丁香久久综合频道| 日本少妇xxx| 亚洲在线成人精品| 亚洲女人18毛片水真多| 欧美日韩成人精品| 99a精品视频在线观看| 99热亚洲精品| 99视频在线精品| 国产精品午夜影院| 精品一区二区电影| 成人黄色免费短视频| 日韩三级电影网站| 麻豆免费精品视频| www.xx日本| 91精品婷婷国产综合久久| 毛片在线不卡| 3d动漫啪啪精品一区二区免费| 亚洲色图网站| 国产成人av免费观看| 亚洲.国产.中文慕字在线| 特级丰满少妇一级aaaa爱毛片| 韩国欧美亚洲国产| 一区二区导航| 天天色综合社区| 亚洲人成精品久久久久久| 国产ts变态重口人妖hd| 久久久久久中文| 少妇久久久久| 日本在线观看免费视频| 自拍偷拍欧美精品| 亚洲免费视频网| 国产成人av在线| 97精品国产一区二区三区 | 美女黄页在线观看| 久久香蕉国产线看观看av| 大型av综合网站| 欧美少妇性生活视频| 亚洲欧洲在线观看av| 亚洲精品久久久狠狠狠爱| 日本成熟性欧美| 国产精品99久久| 成人手机在线免费视频| 欧美日韩一区小说| heyzo一区| 亚洲日本精品国产第一区| 国产精品18久久久久久久网站| 日韩av一二三区| 色黄久久久久久| 成人中文字幕视频| 成人3d动漫一区二区三区| 亚洲视频一区在线观看| 天天综合在线视频| 91精品免费看| 国产视频欧美| 国产一二三四区| 国产丝袜一区二区三区| 激情综合五月| av片中文字幕| 一区二区三区日本| 91在线视频| 国产亚洲精品久久飘花| 久久66热偷产精品| 丁香社区五月天| 久久人人爽人人| 香港欧美日韩三级黄色一级电影网站| 日本丰满少妇裸体自慰 |