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

代碼整潔之道的 7 個方法

開發 前端
在這篇短文中,我將介紹一些你可以用來改進你的代碼的方法。本文代碼示例均使用 JavaScript。

 [[356604]]

可讀的代碼是可維護的

在這篇短文中,我將介紹一些你可以用來改進你的代碼的方法。本文代碼示例均使用 JavaScript。

我發現但凡是可讀的代碼必定是可維護的。

作為一名開發人員,我的目標是編寫高質量的代碼。團隊中的每個開發人員,不管他/她的技術水平如何,都必須能夠通過閱讀理解我所寫的代碼。代碼的可讀性有助于年輕的開發人員編寫代碼時更加自信。

刪除 不必要的 代碼注釋

當然,有些代碼可以非常復雜。我深知這一點且見過很多次。在復雜的代碼中,我會寫些適當的文檔和代碼注釋。

別誤會。我不是代碼注釋或 JavaScript JSdoc 的愛好者,而且基本上我能不用它們便不用。

我不需要任何注釋來解釋這個接收 X 個數組并將它們合并到一個新的數組中的函數。

  1. function mergeArrays(...arrays) { 
  2.   let mergedArray = [] 
  3.  
  4.   arrays.forEach(array => { 
  5.       mergedArray = [...mergedArray, ...array] 
  6.   }) 
  7.  
  8.   return mergedArray 

像示例代碼,如果增添文檔并不能提高可讀性。我希望團隊成員知道展開操作符是什么。如果他們不清楚,他們應該在代碼審查 code review 時來問我。

當然,我們不要忘記注釋的代碼塊。如果我們忘記了,這里只有一個解決方案: 刪除代碼 。既然了不起的 git 可以檢出舊代碼,那么為什么還要把它留在注釋中呢?

請停止把你的代碼庫變成垃圾場。

重視命名

如果你看到函數名 mergeArrays,就應該很清楚地知道這是一個將 X 個數組組合成一個新的數組的函數。

我知道命名是件難事。函數越復雜,命名就越難… 我有個法子讓命名更容易,舉個例子:有一個函數,它會合并兩個數組并生成一個新的唯一的數字列表。你會怎么命名?是下面這樣嗎?

  1. function mergeNumberListIntoUniqueList(listOne, listTwo) { 
  2.   return [...new Set([...listOne, ...listTwo])] 

mergeNumberListIntoUniqueList 這個名字并沒有那么糟糕,至少功能如其名。命名的難點在于這個函數要做兩件事:一個函數做的事情越多,命名它就越困難。將這個函數拆分為兩個單獨的函數,命名會更容易且函數復用更容易。

  1. function mergeLists(listOne, listTwo) { 
  2.   return [...listOne, ...listTwo] 
  3.  
  4. function createUniqueList(list) { 
  5.   return [...new Set(list)] 

當然,不需要調用新函數就可以很容易地創建美觀的一行代碼。但有時,一行代碼的可讀性并不高。

If 語句

我對這個問題的命名無力… 看!命名不易…

但我經常看到這種情況。

問題

  1. if(value === 'duck' || value === 'dog' || value === 'cat') { 
  2.   // ... 

解決方法

  1. const options = ['duck''dog''cat']; 
  2. if (options.includes(value)) { 
  3.   // ... 

這樣做,你創建了一段像是英語句子般的可讀代碼。

如果選項包含值,那么 ...

提前退出機制

這個準則有很多種命名方式,但我選擇了 “提前退出 Early exit” 這個名字。

讓我給你們看一段代碼。我相信你們以前見過這樣的東西。

  1. function handleEvent(event) { 
  2.   if (event) { 
  3.     const target = event.target; 
  4.     if (target) { 
  5.       // Your awesome piece of code that uses target 
  6.     } 
  7.   } 

來我們檢查下對象 event 是否為真,以及屬性 target 是否可用。問題是上面代碼我們已經用了兩個 if 語句。

讓我們看看如何在這里實現 “提前退出”。

  1. function handleEvent(event) { 
  2.   if (!event || !event.target) { 
  3.     return
  4.   } 
  5.   // Your awesome piece of code that uses target 

在這里用 “提前退出”,你可以檢查是否 event 和   event.target 同時非假 。很明顯,我們確信這一事件 event.target 非假。因為如果這個語句為假,程序就不會執行其他代碼。

解構賦值

在 JavaScript 中,我們可以解構數據和對象。

根據 developer.mozilla.org 上的文檔, 解構賦值語法是一種 JavaScript 表達式。通過解構賦值,可以將值從數組、屬性從對象中取出,賦值給其他變量 。

一些代碼示例

  1. // Destructuring an object 
  2. const numbers = {one: 1, two: 2}; 
  3. const {one, two} = numbers; 
  4. console.log(one); // 1 
  5. console.log(two); // 2 
  6.  
  7. // Destructuring an array 
  8. const numbers = [12345]; 
  9. const [one, two] = numbers; 
  10. console.log(one); // 1 
  11. console.log(two); // 2 

解構的問題在于,它有時會為屬性創建一個不好的命名。最好的例子是從 API 獲取數據并接收具有 data 屬性的響應對象。

  1. const url = "http://localhost:8080/api/v1/organizers/1" 
  2. const response = await axios.get(url) 
  3. const {name} = response.data 

這個代碼示例說明你正在獲取 id 為 1 的 organizer。organizer 對象有一個名字,你可以解構它。這樣做沒什么問題。

這段代碼可以正常運行。但是為什么屬性名還是 name ? 那將是整個范圍中唯一的 name 屬性嗎?屬性名又來自哪個對象?

通過重命名屬性可避免這些問題。

  1. const url = "http://localhost:8080/api/v1/organizers/1" 
  2. const response = await axios.get(url) 
  3. const {name: organizerName} = response.data 

這段代碼變得更具可讀性。每個人都知道變量是 organizer 的名字。

童子軍規則

聽過這樣一句話嗎:“永遠保持離開時的露營地比你發現它時更整潔”?

這就是童子軍的規則。讓代碼比發現時更好。你發現代碼異味 code smell?重構它!你發現一個未使用的變量?刪除它!

我喜歡把童子軍規則和打掃房間的情況進行類比。想象一下,你家里的每個人都把盤子放在水槽上,把所有垃圾都放在走廊上,把所有要洗的衣服都放在浴室里。但是每個星期天,你必須花費 4 個多小時清理整個房子。你會鐘意嗎?

我肯定答案是 NO。所以如果每個人都立即清理房間的小部分,星期天的工作量會小一些。

代碼庫同理。如果每個小的代碼異味 code smell 都留在代碼庫中,沒有人刪除未使用的變量,linter 就會抓狂且有大約 77 個 warning。而且代碼庫將會有很多清潔工作要做,但是如果每個人都承擔起自己的責任并遵守童子軍法則,很多問題將會得到解決。

代碼風格

同樣重要的還有確定團隊中的代碼風格。

我不 care 你是喜歡單引號還是雙引號,空格還是 tab,結尾逗號還是不用。選擇一種風格并堅持下去。你可以用 Linter 或者 Prettier 來做這件事。

有很多工具可以用來解決代碼風格問題。我最鐘意的是使用 Husky 預提交鉤子。Prettier 的文檔中也有一個關于預提交鉤子的頁面。

這個預提交鉤子總是在每次提交之前運行配置好的命令。如果你正確地配置它,它會運行得更漂亮,并對所有文件應用所有規則。這確保了團隊總是擁有統一的代碼風格,而沒有任何糟糕的代碼。

小結

我知道有些方法顯而易見,有些則不是。但作為一名全職開發人員,我在不同的代碼庫上工作。這些規則的重要性只有在較大的代碼庫中才會突顯。但這并不意味著你不應該將這些方法用在小項目中,提高你的代碼質量讓小項目更高效。它讓團隊成員方便地閱讀你的代碼并合并你的 pull 請求。正如我所說的,可讀的代碼更容易維護,當然可讀的代碼還有其他更多的好處。

如果你想了解更多關于代碼整潔之道的知識,可以嘗試閱讀羅伯特・馬丁的《代碼整潔之道》。

原文地址:Clean up your code by applying these 7 rules :zap:️

原文作者:Joachim Zeelmaekers(已授權)

譯者 & 校正:HelloGitHub-小魚干 & HelloGitHub-鴨鴨

 

責任編輯:張燕妮 來源: HelloGitHub
相關推薦

2012-08-01 09:38:17

代碼整潔

2021-01-06 14:42:09

前端Typescript代碼

2012-08-01 09:23:31

代碼

2021-03-07 09:19:31

React代碼整潔代碼的實踐

2020-02-29 16:00:20

代碼開發程序員

2025-06-27 06:38:19

2012-09-25 09:28:36

程序員代碼代碼整潔

2025-01-14 00:01:01

2014-03-18 16:12:00

代碼整潔編寫代碼

2012-07-10 13:57:19

Web前端

2024-07-30 10:55:25

2018-03-30 09:00:00

LinuxUbuntu清理方法

2019-05-14 09:31:16

架構整潔軟件編程范式

2011-12-02 10:19:24

CSS

2021-03-19 07:23:23

Go架構Go工程化

2020-07-15 08:37:11

JavaScript開發技術

2015-06-17 14:24:48

優秀程序員整潔代碼

2011-06-03 15:06:30

CSS

2011-06-03 15:21:51

CSS

2015-12-25 10:41:44

編程賺錢方法
點贊
收藏

51CTO技術棧公眾號

国内精品免费| 国产精品区在线观看| 久久97久久97精品免视看秋霞| 91麻豆精品激情在线观看最新 | 国产一区福利| 一区二区三区四区蜜桃| 成人免费视频网站入口| 成人毛片在线播放| 亚洲911精品成人18网站| 欧洲精品一区色| 天堂网av2018| 国产成人一二| 欧美日韩视频在线第一区 | 色喇叭免费久久综合网| 国产精品灌醉下药二区| 蜜芽在线免费观看| 欧洲伦理片一区 二区 三区| 亚洲影音一区| 久久精品中文字幕一区| 无码任你躁久久久久久老妇| 韩国精品视频在线观看| 久久精品国产久精国产爱| 91九色丨porny丨肉丝| 亚洲日本久久久| 成a人v在线播放| 精品欧美一区二区三区在线观看| www亚洲视频| 久久精品视频1| 右手影院亚洲欧美| 国产精品刘玥久久一区| aaa国产一区| 国产日韩在线精品av| 国产午夜精品一区二区理论影院| 久久高清精品| 亚洲天堂网站在线观看视频| 欧美一区二区大胆人体摄影专业网站| 无套白嫩进入乌克兰美女| 成人福利av| 亚洲18女电影在线观看| www.国产二区| 国产丝袜在线| 国产精品美女久久久久久久久久久 | 欧美日韩高清免费| 天堂中文在线资源| 成人精品视频一区二区三区尤物| 成人午夜在线观看| 国产亚洲久一区二区| 性伦欧美刺激片在线观看| 97高清免费视频| 久久亚洲成人av| 欧美xxx在线观看| www.xxxx精品| 国产又粗又硬又长又爽| 日韩精品诱惑一区?区三区| 亚洲美女av在线播放| yy6080午夜| 精品亚洲精品| 日韩经典中文字幕在线观看| 亚洲麻豆一区二区三区| 国产主播性色av福利精品一区| 精品欧美乱码久久久久久| 粗大的内捧猛烈进出视频| 亚洲高清在线一区| 精品少妇一区二区三区日产乱码| 色偷偷中文字幕| 人人九九精品视频| 精品国产成人在线影院| 亚洲色偷偷色噜噜狠狠99网| 国产厕拍一区| 日韩大片在线观看视频| 成年人在线观看av| 国产成人av| 日韩视频永久免费观看| 草视频在线观看| 亚洲天堂久久| 欧美亚洲激情在线| 中文字幕免费播放| 精品亚洲成a人| aaa级精品久久久国产片| 人妻妺妺窝人体色www聚色窝| 成人av在线网| 天堂精品视频| 羞羞网站在线看| 亚洲www啪成人一区二区麻豆| 99精品在线免费视频| 91tv亚洲精品香蕉国产一区| 欧美精品色综合| 麻豆av免费看| 欧美**vk| 欧美成人精品三级在线观看| 国产女同在线观看| 日韩精品1区2区3区| 亚洲wwwav| 五月婷婷狠狠干| 中文字幕乱码日本亚洲一区二区 | 国产精品日韩一区二区三区| 天堂av中文在线资源库| 中文字幕在线一区免费| 隔壁人妻偷人bd中字| 欧洲av不卡| 日韩丝袜美女视频| 91网站免费视频| 欧美日韩精选| 国产免费一区二区三区香蕉精| www.亚洲欧美| 国产欧美综合在线观看第十页| 亚洲自拍偷拍一区二区三区| 345成人影院| 日韩一区二区三区观看| 亚洲图片另类小说| 国产真实久久| 国产区精品视频| 天天在线女人的天堂视频| 最新国产成人在线观看| 国产a视频免费观看| 日韩一二三区| 中文字幕亚洲欧美日韩2019| 国产无码精品在线播放| 精品一区二区国语对白| 蜜桃av久久久亚洲精品| av在线下载| 欧美性videosxxxxx| 国产伦精品一区二区三区精品| 色无极亚洲影院| 日本免费久久高清视频| 丰满熟妇人妻中文字幕| 中文字幕不卡的av| 国产亚洲精品网站| 国产精品白丝一区二区三区| 久久精品视频导航| 91丨九色丨海角社区| av不卡在线播放| 天堂а√在线中文在线| 亚洲欧美一级| 中文字幕av一区中文字幕天堂| 亚洲精品男人的天堂| 粉嫩高潮美女一区二区三区| 中文字幕一区综合| 久久精品国产福利| 亚洲视频专区在线| 青青国产在线观看| 波多野洁衣一区| 欧美亚洲色图视频| 日韩国产在线不卡视频| 久久成人精品一区二区三区| 国产又黄又粗又猛又爽| 欧美激情一区不卡| 无码内射中文字幕岛国片| 亚洲精品一级二级三级| 欧美在线www| 日本中文字幕一区二区有码在线| 天天影视色香欲综合网老头| 久久福利小视频| 欧美私人啪啪vps| 99久久精品久久久久久ai换脸| 91三级在线| 精品国产一二三| 日本少妇激情舌吻| 91玉足脚交白嫩脚丫在线播放| 欧美一级在线看| 免费看成人哺乳视频网站| 国产成人久久精品| av电影在线网| 91精品国产一区二区三区蜜臀 | 一本色道久久综合精品竹菊| 精品人妻一区二区三区香蕉| 免费视频久久| 日韩av电影免费播放| 91国内外精品自在线播放| 一区二区三区日韩在线| 一二三区在线播放| 亚洲欧美日韩小说| 亚洲色图欧美另类| 免播放器亚洲| 国产又爽又黄ai换脸| 亚洲午夜免费| 日本久久久久久久| 日本中文字幕电影在线免费观看| 91精品国产色综合久久ai换脸 | 7777精品伊人久久久大香线蕉经典版下载 | 午夜精品福利在线| 欧美特黄一区二区三区| 另类小说一区二区三区| 在线观看18视频网站| 91精品日本| 欧美专区第一页| 日本不卡在线| 精品国产91亚洲一区二区三区婷婷| 毛片毛片女人毛片毛片| 国产精品久久毛片| 丰满少妇xbxb毛片日本| 日韩综合在线视频| 天天在线免费视频| 亚洲第一二三区| 91精品视频免费观看| 国产极品在线观看| 在线观看精品国产视频| 欧美一区二不卡视频| 欧美三级电影在线观看| 久久久久99精品成人片毛片| 久久亚洲欧美国产精品乐播| 日韩成人av免费| 国产一区白浆| 欧美日韩一区二区三区电影| 亚洲动漫精品| 99re视频在线| 国产欧美自拍| 91高清视频免费观看| av在线导航| 国产亚洲精品激情久久| 亚洲精品视频网| 欧美久久高跟鞋激| 久久精品五月天| 亚洲成人1区2区| 暗呦丨小u女国产精品| 国产香蕉久久精品综合网| 无码国产精品一区二区免费式直播| 美女在线一区二区| 精品一区二区中文字幕| 欧美成人高清| 一道精品一区二区三区| 竹菊久久久久久久| 久久66热这里只有精品| 日韩欧美中文字幕一区二区三区| 日本精品久久中文字幕佐佐木| sm在线观看| 欧美风情在线观看| 久草免费在线| 日韩资源在线观看| 免费在线性爱视频| 亚洲国产精品99| 亚洲成人77777| 91麻豆精品国产91久久久久久| 伊人久久中文字幕| 色综合色综合色综合| 日本一二三区视频| 亚洲另类在线视频| www.av成人| 中文字幕永久在线不卡| 国产三级在线观看完整版| 久久久噜噜噜久久人人看| 国产精品久久久久久亚洲色| 成人综合在线观看| 在线观看欧美一区二区| 国产最新精品精品你懂的| 97超碰成人在线| 久久99久久99精品免视看婷婷| 久久精品免费网站| 青娱乐精品视频| www.久久久精品| 美国av一区二区| 亚洲免费黄色录像| 狠狠色综合日日| 亚洲女人在线观看| 国产精品正在播放| 欧美丰满熟妇bbb久久久| 国产91色综合久久免费分享| www.四虎精品| 99久久久久免费精品国产 | 欧美亚洲国产成人精品| 芒果视频成人app| 国产成人高清激情视频在线观看| 少妇一区视频| 国产日韩在线亚洲字幕中文| 在线视频成人| 俄罗斯精品一区二区| 欧美福利在线播放网址导航| 久久亚洲国产精品日日av夜夜| 亚洲aaa级| 亚洲v欧美v另类v综合v日韩v| 91综合视频| av在线观看地址| 久久久精品五月天| 在线观看免费视频高清游戏推荐 | 精品伦一区二区三区| 99精品国产99久久久久久白柏| a级在线观看视频| 国产欧美视频一区二区三区| 久久高清内射无套| 午夜激情综合网| 成人免费视频国产免费| 制服丝袜激情欧洲亚洲| 欧美综合视频在线| 亚洲无限av看| 日本孕妇大胆孕交无码| 欧美一级在线亚洲天堂| 亚洲一区导航| 极品校花啪啪激情久久| 欧美好骚综合网| 欧美日韩在线一| 久久精品国产精品亚洲红杏| 欧美xxxx日本和非洲| 久久久国产精品午夜一区ai换脸| 国产中文av在线| 婷婷丁香久久五月婷婷| 91亚洲视频在线观看| 日韩高清a**址| 免费a级人成a大片在线观看| 97国产在线观看| 亚洲成人高清| 日本免费高清一区| 亚洲视频福利| 中文字幕成人免费视频| 99re66热这里只有精品3直播| 手机av在线不卡| 欧美午夜宅男影院在线观看| 国产视频一区二区三区四区五区| 日韩福利视频在线观看| 四虎影院观看视频在线观看| 国产精品久久久久久久美男| 加勒比色综合久久久久久久久 | 亚洲黄色精品| 91亚洲一区二区| 国产精品伦一区二区三级视频| 日韩成年人视频| 6080国产精品一区二区| 精品久久久久一区二区三区| 久久免费高清视频| 精品成人18| 亚洲视频电影| 爽好多水快深点欧美视频| 在线观看成人动漫| 亚洲激情综合网| 91精品国产乱码久久久| 亚洲三级黄色在线观看| 九九色在线视频| 91美女片黄在线观| 国产精品二区不卡| 欧美美女一级片| 国产精品乱人伦一区二区| 亚洲 国产 日韩 欧美| 亚洲精品视频久久| 国产精品电影| 国产精品久久国产精品| 亚洲天堂免费| 久国产精品视频| 国产精品乱人伦| 97超碰人人模人人人爽人人爱| 在线一区二区日韩| 91看片一区| 亚洲第一导航| 精品一区二区三区在线观看| 国产亚洲精品久久久久久豆腐| 欧美调教femdomvk| 天堂аⅴ在线地址8| 国产日韩欧美在线观看| 99久久激情| 国产精品嫩草影视| 一区二区三区国产精品| 亚洲a视频在线| 久久久久久久91| 欧美一性一交| 国产日韩一区二区在线观看| 国产日本欧洲亚洲| 人妻中文字幕一区二区三区| 色老头一区二区三区| 日韩精品一级毛片在线播放| 99亚洲精品视频| 国产一区二区h| 日本最新中文字幕| 亚洲精品视频在线播放| 吞精囗交69激情欧美| 亚洲.欧美.日本.国产综合在线| 奇米精品一区二区三区在线观看 | 欧美韩日一区| 久草福利在线观看| 亚洲大尺度视频在线观看| 手机亚洲第一页| 国产精品久久77777| 99精品全国免费观看视频软件| 4438x全国最大成人| 亚洲aⅴ怡春院| 国产福利免费在线观看| 亚洲一区二区三区四区在线播放| 好吊日精品视频| 97超碰在线资源| 欧美日韩国产综合视频在线观看| 成人av福利| 免费看国产精品一二区视频| 免费高清不卡av| 日韩黄色精品视频| 亚洲偷欧美偷国内偷| 日韩精品一区二区三区中文 | 日日骚一区二区三区| 亚洲精品第一国产综合精品| 久久爱.com| 免费国产黄色网址| 中文字幕一区日韩精品欧美| 人妻少妇一区二区三区| 国产欧美精品一区二区三区-老狼| 国产精品99一区二区| 精品人妻无码一区二区三区换脸| 91精品国产综合久久久久久漫画| 嗯啊主人调教在线播放视频| 婷婷久久五月天| av中文字幕亚洲| 夜夜嗨aⅴ一区二区三区| 91国产精品91| 中文视频一区| 免费在线观看污|