国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

代碼整潔之道的 7 個方法

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

 [[356604]]

可讀的代碼是可維護的

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

我發(fā)現(xiàn)但凡是可讀的代碼必定是可維護的。

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

刪除 不必要的 代碼注釋

當然,有些代碼可以非常復雜。我深知這一點且見過很多次。在復雜的代碼中,我會寫些適當?shù)奈臋n和代碼注釋。

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

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

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

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

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

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

重視命名

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

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

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

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

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

當然,不需要調(diào)用新函數(shù)就可以很容易地創(chuàng)建美觀的一行代碼。但有時,一行代碼的可讀性并不高。

If 語句

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

但我經(jīng)常看到這種情況。

問題

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

解決方法

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

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

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

提前退出機制

這個準則有很多種命名方式,但我選擇了 “提前退出 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 是否可用。問題是上面代碼我們已經(jīng)用了兩個 if 語句。

讓我們看看如何在這里實現(xiàn) “提前退出”。

  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 非假。因為如果這個語句為假,程序就不會執(zhí)行其他代碼。

解構(gòu)賦值

在 JavaScript 中,我們可以解構(gòu)數(shù)據(jù)和對象。

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

一些代碼示例

  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 

解構(gòu)的問題在于,它有時會為屬性創(chuàng)建一個不好的命名。最好的例子是從 API 獲取數(shù)據(jù)并接收具有 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 對象有一個名字,你可以解構(gòu)它。這樣做沒什么問題。

這段代碼可以正常運行。但是為什么屬性名還是 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 的名字。

童子軍規(guī)則

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

這就是童子軍的規(guī)則。讓代碼比發(fā)現(xiàn)時更好。你發(fā)現(xiàn)代碼異味 code smell?重構(gòu)它!你發(fā)現(xiàn)一個未使用的變量?刪除它!

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

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

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

代碼風格

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

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

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

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

小結(jié)

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

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

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

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

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

 

責任編輯:張燕妮 來源: HelloGitHub
相關(guān)推薦

2012-08-01 09:38:17

代碼整潔

2012-08-01 09:23:31

代碼

2021-01-06 14:42:09

前端Typescript代碼

2021-03-07 09:19:31

React代碼整潔代碼的實踐

2020-02-29 16:00:20

代碼開發(fā)程序員

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

架構(gòu)整潔軟件編程范式

2011-12-02 10:19:24

CSS

2021-03-19 07:23:23

Go架構(gòu)Go工程化

2020-07-15 08:37:11

JavaScript開發(fā)技術(shù)

2015-06-17 14:24:48

優(yōu)秀程序員整潔代碼

2011-06-03 15:06:30

CSS

2015-12-25 10:41:44

編程賺錢方法

2011-06-03 15:21:51

CSS
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲国产精品电影在线观看| 国产亚洲综合在线| h视频网站在线观看| 国产一级特黄a大片免费| 日韩视频一区二区三区| 欧美大片aaaa| 国产人妖ts一区二区| 草草草视频在线观看| 97免费在线视频| 久久精品卡一| 午夜视频一区二区三区| 热久久视久久精品18亚洲精品| 极品美女扒开粉嫩小泬| 韩国成人动漫| 日韩黄色片在线观看| 伊人成色综合网| 在线欧美三级| 日韩经典中文字幕一区| 久久久久免费精品国产| 成人网18免费软件大全| 亚洲婷婷丁香| 天天操天天色综合| 亚洲最大的成人网| 国产资源在线观看| 在线视频观看日韩| 欧美成人在线直播| 欧美精品午夜视频| 成人三级视频在线播放| 精品欧美视频| |精品福利一区二区三区| 国产成人综合久久| 国产区在线视频| 国产精品久久久久9999高清| 日韩欧美高清dvd碟片| 一区二区三区四区在线免费视频| 日韩一区欧美| 欧美日韩一区久久| 日日夜夜精品一区| 国内精品伊人久久久| 国产一区二区免费看| 亚洲美女在线观看| 四虎影院一区二区| 视频在线观看免费影院欧美meiju| 久久久久久亚洲综合| 欧美在线视频一区二区| 国产亚洲高清在线观看| 亚洲成a人v欧美综合天堂下载 | 91精品久久久久久久久久另类 | 亚洲日本va中文字幕| 成人欧美一区二区三区小说 | 欧美一级在线观看| 大西瓜av在线| 五月天亚洲一区| 精品久久久久久亚洲国产300| 国产特级嫩嫩嫩bbb| 亚洲午夜精品久久久久久app| 国产日韩精品一区二区三区| 9久久9毛片又大又硬又粗| www.亚洲人| 91热福利电影| 黑人巨大精品| 亚洲最新中文字幕| 两个人看的免费完整在线观看| 亚洲精品资源| 欧美在线视频一区二区三区| 国产精品无码久久久久| 亚洲人成人一区二区在线观看| 国产精品免费一区二区三区| 88xx成人网| 亚洲第一狼人社区| 亚洲精品在线观看免费| 亚洲免费毛片| 91老司机在线| 奇米精品一区二区三区四区| 亚洲男人第一av网站| 日韩黄色碟片| 一区免费视频| 成人h动漫免费观看网站| 精品久久香蕉国产线看观看亚洲| 中文字幕视频在线| 成人一级片网址| 翡翠波斯猫1977年美国| 麻豆理论在线观看| 亚洲精品中文在线| 国产欧美123| 中文乱码免费一区二区| 日本一区二区在线视频| 久久久久久久久久久久久久久久久久久久| 欧美在线免费播放| 99热热99| 日韩欧美黄色动漫| 欧美大尺度做爰床戏| 日韩精品一二三区| 超碰97人人射妻| 国产一区在线视频| 黄色永久免费网站| av中文字幕一区| 亚洲私人影吧| 国产一区二区三区日韩欧美| 色婷婷av在线| 欧美性受极品xxxx喷水| 国产精品扒开腿做爽爽爽视频软件| 欧美日韩一区国产| 日韩福利在线观看| 国产伦精品一区二区三| av在线不卡电影| 日本精品在线| 浅井舞香一区二区| 国产精品影视天天线| 少妇免费毛片久久久久久久久 | 亚洲高清不卡在线| 六月婷婷综合| 成人高清在线观看| 亚洲91精品| 国产美女久久久| 精品精品99| 91国在线精品国内播放| 国产精品毛片无码| 精品综合久久久| 99久久香蕉| 蜜桃久久精品乱码一区二区| 一本一道久久综合狠狠老精东影业| 91老司机精品视频| 99精品国产一区二区三区不卡| 成人一区二区免费视频| 国产成人综合在线| 一区二区三区欧美成人| 日韩高清国产一区在线| 福利在线白白| 欧美多人爱爱视频网站| 欧美18xxxx| 国产精品美女免费看| 99久久久久国产精品| 国产区亚洲区欧美区| 欧美日韩国产高清电影| 久久久久久久久久久视频| 久久久久久电影| aa级大片免费在线观看| 国产亚洲欧洲高清| 久久亚洲精选| 男的插女的下面视频| 在线看国产日韩| 欧美家庭影院| 亚洲天堂免费在线| 国产一区二区三区的电影| 免费观看v片在线观看| 日本成熟性欧美| 亚洲欧洲精品成人久久奇米网| 粉嫩av国产一区二区三区| 久久手机在线视频| 亚洲性生活视频| 国产一本一道久久香蕉| 极品美鲍一区| 欧美乱大交做爰xxxⅹ性3| 日韩毛片视频| 国产国产人免费人成免费视频| 色综合久久久888| 久久嫩草精品久久久久| 亚洲美女主播视频免费观看| 精品视频色一区| 在线看片不卡| 在线观看成人一级片| 丁香婷婷综合五月| 国产高清不卡| 日本一本中文字幕| 久久影院资源网| 91久久夜色精品国产按摩| 色偷偷亚洲女人天堂观看欧| 青青草一区二区| 亚洲一本大道在线| 波多野结衣精品| 国内精品久久久久久久久| 亚洲国产成人午夜在线一区| 精品人人人人| 360天大佬第二季在线观看| 欧美一区二区三区视频在线| 香蕉亚洲视频| 亚洲综合婷婷久久| 日本中文字幕不卡免费| 日韩综合小视频| 123区在线| 无码精品a∨在线观看中文| 欧美激情亚洲视频| 水野朝阳av一区二区三区| 亚洲91av| 国产 日韩 欧美在线| 高清欧美性猛交xxxx| 亚洲成人久久影院| 久久一区二区三区超碰国产精品| 成人美女视频| 高清av免费看| http;//www.99re视频| 欧美精品一区二区久久久| 青青久久av| 日本一级在线观看| 久久精品成人欧美大片| 亚洲人成免费| 国产免费不卡| 国产美女特级嫩嫩嫩bbb片| 久久久一本精品99久久精品66|