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

3d动漫啪啪精品一区二区免费 | 久久露脸国语精品国产91| 日韩一区二区三区精品视频第3页 日韩一区二区三区精品 | 欧美亚洲在线日韩| 欧美一级国产精品| 国产精品无码专区av在线播放| 午夜伦理在线| 成人禁用看黄a在线| 日韩av免费网站| 免费看一级一片| 国产欧美高清视频在线| 日韩欧美在线影院| 国产天堂在线播放| 国产www视频在线观看| 国产日本一区二区| 国产精品免费视频一区二区| 亚洲成人av网址| 国精品一区二区| 在线不卡国产精品| 久久福利小视频| 99视频这里有精品| 91久久精品网| 男女猛烈激情xx00免费视频| 日本三级在线视频| 91麻豆精品秘密| 91久久偷偷做嫩草影院| 波多野结衣二区三区| 亚洲一级影院| 久久影院模特热| 欧美大波大乳巨大乳| 久久视频在线观看| 日韩一级黄色片| 99sesese| 99久久伊人| 日韩欧美高清在线视频| www.亚洲成人网| 国产精品久久麻豆| 国产精品久久久久久久久久免费看 | 一本色道久久综合亚洲精品小说| 免费看毛片的网站| 午夜日韩影院| 日韩欧美一区二区免费| 伊人影院综合在线| 97成人超碰| 欧美亚洲动漫另类| 别急慢慢来1978如如2| 美女搞黄视频在线观看| 亚洲成人在线观看视频| 97超碰在线视| 91国内在线| 亚洲精品国产a久久久久久| 在线综合视频网站| 麻豆传媒视频在线| 亚洲欧洲精品天堂一级| 亚洲第一精品区| 日韩黄色影院| 亚洲天堂av一区| 在线观看日韩羞羞视频| 日本暖暖在线视频| 亚洲欧洲三级电影| 一区二区三区精品国产| 在线观看二区| 136国产福利精品导航| 中文字幕一区二区三区在线乱码| 午夜毛片在线| 亚洲精品日韩专区silk| 大陆极品少妇内射aaaaaa| 四季久久免费一区二区三区四区| 亚洲免费视频中文字幕| 97在线国产视频| 女人让男人操自己视频在线观看| 色悠悠亚洲一区二区| 国产一级片黄色| 自拍偷拍亚洲| 欧美成人一级视频| 97人妻天天摸天天爽天天| 综合国产视频| 精品久久国产精品| 精品肉丝脚一区二区三区| 亚洲精选在线| 国产精品久久91| 国产乱人乱偷精品视频a人人澡| 青青草97国产精品免费观看无弹窗版| 国产精品免费久久久久久| 一级特黄aaaaaa大片| 国产精品99久久久| 久久偷看各类wc女厕嘘嘘偷窃| 欧美在线一卡| 亚洲日本va在线观看| 黄页网站大全在线观看| 三级成人在线| 欧美一区二区精品在线| 在线观看av中文字幕| 成人看的视频| 久久久久久国产精品三级玉女聊斋| 久久精品视频7| 久久99国产精品麻豆| 国产伦精品一区二区三| 8888四色奇米在线观看| 亚洲国产日韩一级| 日本熟妇人妻中出| eeuss国产一区二区三区四区| 亚洲天堂av网| 久久无码精品丰满人妻| 日本欧美一区二区在线观看| 97视频中文字幕| 国产毛片在线| 天天亚洲美女在线视频| 欧美第一页浮力影院| 嫩草国产精品入口| 欧美老少做受xxxx高潮| 久久人人爽人人爽人人片av免费| 懂色av一区二区三区免费观看| 亚洲国产欧美不卡在线观看 | 免费av网站观看| 国产精品久久久久久久久图文区| 国产3p露脸普通话对白| av在线精品| 亚洲美女久久久| 久久精品99久久久久久| 免费观看日韩电影| 欧美污视频久久久| 丁香花在线电影小说观看| 欧美精品粉嫩高潮一区二区| 国产全是老熟女太爽了| 在线播放日韩| 亚洲一区二区三区视频| 幼a在线观看| 欧美制服丝袜第一页| 一级国产黄色片| 国户精品久久久久久久久久久不卡| 国产专区欧美专区| av网站在线播放| 色94色欧美sute亚洲线路二| 日韩免费高清一区二区| 你懂的国产精品永久在线| 国产欧美一区二区三区久久人妖| 你懂的视频在线| 欧美丝袜美女中出在线| 欧美无人区码suv| 日韩网站在线| 国产综合动作在线观看| 丁香花在线影院| 日韩免费一区二区三区在线播放| 久久av红桃一区二区禁漫| 免费成人在线观看视频| 四虎影院一区二区三区| 视频在线日韩| 一区二区在线视频播放| 少妇又紧又色又爽又刺激视频| 久久久亚洲国产美女国产盗摄| 欧美色图色综合| 小说区图片区色综合区| 日本中文字幕久久看| 国产一区精品| 欧美午夜片在线看| 国产黄色录像片| 精品一区二区在线免费观看| 只有这里有精品| 国产亚洲久久| 欧美福利在线观看| 黑人精品一区二区三区| 黄网动漫久久久| 手机av免费看| 日本网站在线观看一区二区三区| 亚洲成人自拍视频| 日本国产亚洲| 欧美另类xxx| 天堂成人在线| 在线视频国内自拍亚洲视频| 大胸美女被爆操| 国产一区二区三区久久久| 欧美另类videosbestsex日本| 99re91这里只有精品| 午夜精品理论片| 国内在线精品| 911国产精品| 精品少妇一二三区| 久久精品一区四区| 拔插拔插华人永久免费| 亚洲大胆在线| 日本黑人久久| 警花av一区二区三区| 久久免费福利视频| 成人好色电影| 日韩欧美国产一区二区三区| 国产成人亚洲精品自产在线| 国产日韩三级在线| 小日子的在线观看免费第8集| 最新亚洲激情| 五月天综合网| 国产精品欧美大片| 国产精品一区二区三区久久 | 亚洲综合清纯丝袜自拍| 亚洲做受高潮无遮挡| 国产伦精一区二区三区| 欧美性大战久久久久xxx| 日本久久综合| 国产日韩三区| 欧洲亚洲精品久久久久| 97国产精品视频人人做人人爱| av色图一区| 欧美精品一区男女天堂| 一区二区日韩在线观看| 精品国产福利视频| 538任你躁在线精品视频网站| 久久先锋影音av鲁色资源网| 亚洲一区二区图片| 石原莉奈在线亚洲二区| 日本男女交配视频| 欧美激情国产在线| 免费在线成人av| 97成人在线| 成人免费观看a| 欧美性猛交xxx高清大费中文| 欧美日韩国产91| 求av网址在线观看| 亚洲偷欧美偷国内偷| 丰满大乳国产精品| 欧美一级免费观看| 一二三区在线播放| 在线观看日韩毛片| 东京热一区二区三区四区| 亚洲在线视频网站| 手机在线免费看片| 日本一区二区久久| 国产熟妇搡bbbb搡bbbb| www.日韩大片| 国产调教打屁股xxxx网站| 久久成人综合网| 爱情岛论坛亚洲首页入口章节| 午夜亚洲一区| av天堂永久资源网| 国产精品普通话对白| 欧美精品久久久久久久久久久| 91精品推荐| 国产一区一区三区| 91九色精品国产一区二区| 色视频一区二区三区| 国产99久久精品一区二区300| 精品综合在线| 欧美三级电影在线| 久久久水蜜桃| 久久成人高清| 神马影院午夜我不卡影院| 欧美军人男男激情gay| 日本一区二区精品| 精品视频亚洲| 亚洲国产婷婷香蕉久久久久久99| 成人免费在线播放| 伊人狠狠色丁香综合尤物| 日韩精品首页| 亚洲AV无码成人精品一区| 99久久久国产精品美女| 三年中国中文在线观看免费播放| 亚洲乱码精品| 妞干网在线播放| 在线综合亚洲| 熟女人妇 成熟妇女系列视频| 免费一级欧美片在线观看| 婷婷免费在线观看| 国产精品一二二区| 亚洲成年人av| 久久久久久久免费视频了| 怡红院一区二区三区| 国产精品欧美一级免费| 疯狂撞击丝袜人妻| 一个色综合网站| 欧美精品亚洲精品日韩精品| 欧美性猛交xxxx乱大交蜜桃| 波多野结衣一本一道| 欧美日韩国产一级片| www.久久精品.com| 亚洲韩国青草视频| 川上优的av在线一区二区| 久久综合久久八八| 久草在线资源站手机版| 国产91免费看片| 日韩黄色三级| 99一区二区三区| 亚洲系列另类av| 黄色网络在线观看| av成人激情| 在线观看免费不卡av| 成人一区二区三区在线观看| 国产精品jizz| 一区二区在线电影| 看黄色一级大片| 日韩欧美精品三级| 黄色国产在线| 欧美人成在线视频| 日本在线精品| 国产精品视频免费观看| 欧美军人男男激情gay| 国产视频在线观看网站| 久久婷婷影院| 日韩精品――色哟哟| 91蝌蚪国产九色| 波多野结衣家庭教师| 色综合欧美在线| 亚洲国产www| 最近2019年日本中文免费字幕| 成av人片在线观看www| 成人信息集中地欧美| 亚洲精品无吗| 国产 日韩 欧美在线| 麻豆91小视频| 精品无码人妻一区| 亚洲在线中文字幕| 国产女主播福利| 中文字幕日韩av电影| 国产福利电影在线播放| 成人免费看吃奶视频网站| 亚洲制服一区| www插插插无码视频网站 | 国产精品日韩电影| 欧美黑白配在线| 女女百合国产免费网站| 免费在线观看日韩欧美| 午夜一区二区三区免费| 亚洲一卡二卡三卡四卡五卡| 一区二区久久精品66国产精品 | 欧美日韩在线播| 天堂av在线7| 久久久久亚洲精品| 国产一区二区三区精品在线观看| 日韩欧美第二区在线观看| 亚洲免费中文| 极品粉嫩小仙女高潮喷水久久| 一个色在线综合| 国产ts变态重口人妖hd| xvideos国产精品| 看片一区二区| 天天爽天天狠久久久| 久久精品在线| 欧美一区二区三区成人精品| 精品久久久中文| 特黄视频在线观看| 97精品久久久| 欧美日韩精品一区二区三区在线观看| 久久这里只有精品18| 国产91精品露脸国语对白| 久草网站在线观看| 日韩美女视频在线| 欧美人与动牲性行为| 99视频免费观看| 欧美久久一级| 折磨小男生性器羞耻的故事| 亚洲综合一区二区精品导航| 国产欧美久久久精品免费| 久久这里有精品| 亚洲2区在线| 拔插拔插海外华人免费| jlzzjlzz亚洲日本少妇| 日韩精品无码一区二区| 亚洲精品www| 欧洲av不卡| 天堂社区 天堂综合网 天堂资源最新版 | 中文字幕色呦呦| 国产精品88888| 国产精品99无码一区二区| 亚洲国产精品va在线| 英国三级经典在线观看| 欧美亚洲丝袜| 美腿丝袜亚洲色图| 男人av资源站| 精品国产污污免费网站入口| 僵尸再翻生在线观看免费国语| 精品网站在线看| 日本午夜一区二区| 欧美第一页在线观看| 精品电影一区二区| 成年美女黄网站色大片不卡| 色一情一乱一伦一区二区三区丨| 久久se这里有精品| 久久综合加勒比| 国产偷国产偷亚洲清高网站| 成人做爰免费视频免费看| xxxxxx在线观看| 久久久综合精品| 一本到在线视频| 久久免费国产视频| 精品国产91久久久久久浪潮蜜月| 色呦色呦色精品| 亚洲国产成人av好男人在线观看| 免费在线黄色电影| 亚洲va久久久噜噜噜久久天堂| 亚洲美洲欧洲综合国产一区| 91激情视频在线观看| 日韩精品一区国产麻豆| 大胆人体一区| 久久久成人精品一区二区三区 | 欧美日本高清视频在线观看| 色网在线观看| 亚洲不卡一卡2卡三卡4卡5卡精品| 毛片av一区二区| 国产成人精品片| 久久成人一区二区| 国产乱码精品一区二区亚洲| 欧美人与性动交α欧美精品|