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

6個編寫優質干凈代碼的技巧

開發 前端
編寫干凈的代碼并不是一件容易的事情,這需要嘗試不同的技巧和實踐。問題是,在這個問題上有太多的實踐和技巧,因此開發人員很難進行選擇,所以要把這個問題簡化一下。在本文中,將首先討論編寫干凈代碼的一些好處,然后將討論6個技巧或者實踐,用于編寫最常用的干凈代碼。

【譯者注】作為一名開發者,編寫一手干凈的代碼很重要,所以在本文中作者先列舉出編寫干凈代碼的一些好處,再提出6個技巧用于編寫干凈代碼,供開發者進行參考學習。

以下為譯文:

編寫干凈的代碼并不是一件容易的事情,這需要嘗試不同的技巧和實踐。問題是,在這個問題上有太多的實踐和技巧,因此開發人員很難進行選擇,所以要把這個問題簡化一下。在本文中,將首先討論編寫干凈代碼的一些好處,然后將討論6個技巧或者實踐,用于編寫最常用的干凈代碼。

[[203596]]

以下是目錄內容:

引用

編寫干凈代碼的好處

  1. 更容易開始和繼續一個項目
  2. 有利于團隊新員工培訓
  3. 更容易遵循編碼模式

寫干凈代碼的技巧

  1. 編寫可讀的代碼
  2. 為變量、函數和方法使用有意義的名稱
  3. 讓每個函數或方法只執行一個任務
  4. 使用注釋來解釋代碼
  5. 保持代碼風格一致性
  6. 定期檢查你的代碼

關于編寫干凈代碼的一些想法

寫干凈代碼的好處

先來了解編寫干凈代碼的一些好處。其中一個主要好處是,干凈的代碼可以減少花在閱讀上的時間和理解代碼的時間。凌亂的代碼會減慢任何開發人員的速度,使開發者的工作變得更加困難。代碼越混亂,開發人員就越需要花更多的時間去充分理解它,這樣才能使用這些代碼。而且,如果代碼太亂,開發人員可能會決定停止閱讀這些代碼,并自己從頭開始編寫。

1.更容易開始和繼續一個項目

先用一個簡單的例子來說明這個問題。假設在很長一段時間后我們回到了之前的一個項目,也許在這段時間是一位客戶聯系我們去做了另一項工作。現在,想象一下,那時如果沒有編寫干凈的代碼,那么在第一眼看到代碼之后,該是有多糟糕和混亂。而且,也可以知道從當初離開的地方開始編碼有多困難。

因此,現在必須花更多的時間在項目上,因為我們需要理解之前編寫的代碼。這本來是可以避免的,如果從一開始就編寫干凈的代碼,然而現在必須為此付出代價。而且,舊代碼是如此混亂和糟糕,以至于我們可能決定從頭開始。客戶聽到這些消息后可能不會高興。

另一方面,干凈的代碼通常就沒有這個問題。假設前面的例子是相反的情況,以前的代碼是干凈和優雅的,那么理解它需要多長時間?也許只需要讀幾分鐘的代碼就能理解所有的工作原理,而且我們可能已經開始編寫一段時間了,所以在這種情況下花的精力將明顯小于第一個案例,同時,客戶也不會太在意。

這是編寫干凈代碼的第一個好處,而且,這不僅適用于自己的項目,也適用于其他開發人員的工作。干凈的代碼可以更快地啟動工作,任何人都不需要花費數小時來研究代碼,相反,我們可以直接進入工作。

2.有利于團隊新員工培訓

編寫干凈代碼的另一個好處與第一個好處是密切相關的,那就是可以讓新員工更容易更快地使用代碼。假設我們需要雇傭一個開發人員,那么她要花多長時間才能理解代碼并學會使用它呢?當然這要視情況而定。如果我們的代碼很亂,寫得很差,她就需要花更多的時間來學習代碼。另一方面,如果代碼干凈、易讀、簡單易懂,她將能夠更快地開始她的工作。

有些人可能會說,這不是個問題,因為其他開發人員可以幫助她。當然這是正確的,但是幫助只應該花很短的時間,是兩三次或者一兩天,而并不應該是兩三個星期。所以,決定雇傭另一個開發人員的目的,是來加速我們的工作,而不是減慢速度,也不是花費更多的時間來幫助她學會使用代碼。

當我們努力寫出干凈的代碼時,其他人就會向我們學習,也就更容易跟著寫出干凈的代碼。當然,仍然需要留出一些時間來幫助每個新開發人員了解和理解代碼。當然,我的意思是幾天,而不是幾周。此外,干凈的代碼將幫助團隊帶來更多的開發人員,并同時幫助他們理解代碼。簡單地說,代碼越簡潔就越容易解釋,誤解也就越少。

3.更容易遵循編碼模式

有一件事需要記住,理解和學習如何使用代碼是一回事。然而,這僅僅是個開始,同時還需要確保開發人員能夠愿意遵循我們的編碼模式。當然,使用干凈的代碼比混亂的代碼更容易實現這個目標。這是很重要的,因為團隊不僅想要編寫干凈的代碼,而且還一直保持這種模式,這也是需要長期思考的。

另外,如果開發人員不遵循當前的編碼模式該怎么辦? 這個問題通??梢宰孕薪鉀Q。假設有一群人在同一個代碼基礎上工作,其中一個人開始偏離標準樣式。然后,團隊的其他成員將推動這個開發人員遵循標準。她會接受建議,因為她不想離開這個團隊。

還有一種情況,開發人員會說服團隊的其他人采納并遵循自己的編碼模式。如果開發人員提出的編碼模式更干凈,并且能帶來更好的結果,這當然是件好事。的確,編寫和保持干凈的代碼并不意味著應該忽略任何改進它的機會,我認為應該始終對目前的做法保持可改進的態度,并努力尋找改進的機會。

因此,如果一個開發人員偏離了當前的模式,同時她的模式也更好,那么我們做出改變也許會更合適。所以在嘗試其他模式之前,不應該忽視其他人的編碼實踐,同時我們應該繼續尋找改進的余地。最后,第三種情況。開發人員決定既不采用我們的實踐,也不說服我們采用她的實踐。因為她將決定離開團隊。

寫干凈代碼的技巧

現在除了討論編寫干凈代碼的好處,也是時候學習一些技巧來幫助我們實現這個目標了。正如將在以下看到的,干凈的代碼包含并遵循著一些方法。這些方法使代碼更干凈、易讀、更易于理解、更簡單。當然沒有必要實施所有的方法,實施并遵循一兩項措施就足以帶來積極的結果。

1.編寫可讀的代碼

的確,所寫的代碼將會機器解釋,然而這并不意味著應該忽視代碼的可讀性和可理解性,因為在將來總會有另一個人會使用我們寫的代碼。即使讓別人無法訪問我們的代碼,但我們自己也可能在將來又重新拾起這些代碼。出于這些原因,讓代碼便于閱讀和理解是符合我們自己的利益的。那么如何實現呢?

最簡單的方法是使用空格。在發布代碼之前,可以縮減代碼,但是沒有必要讓代碼看起來很小型化。相反,可以使用縮進、換行和空行來使代碼結構更具可讀性。當決定采用這種方式時,代碼的可讀性和可理解性就會顯著提高。然后,看著代碼就可以更容易理解它了。來看兩個簡單的例子。

 

  1. // Bad 
  2. const userData=[{userId: 1, userName: 'Anthony Johnson', memberSince: '08-01-2017', fluentIn: [ 'English''Greek''Russian']},{userId: 2, userName: 'Alice Stevens', memberSince: '02-11-2016', fluentIn: [ 'English''French''German']},{userId: 3, userName: 'Bradley Stark', memberSince: '29-08-2013', fluentIn: [ 'Czech''English''Polish']},{userId: 4, userName: 'Hirohiro Matumoto', memberSince: '08-05-2015', fluentIn: [ 'Chinese''English''German''Japanese']}]; 
  3.  
  4. // Better 
  5. const userData = [ 
  6.   { 
  7.     userId: 1, 
  8.     userName: 'Anthony Johnson'
  9.     memberSince: '08-01-2017'
  10.     fluentIn: [ 
  11.       'English'
  12.       'Greek'
  13.       'Russian' 
  14.     ] 
  15.   }, { 
  16.     userId: 2, 
  17.     userName: 'Alice Stevens'
  18.     memberSince: '02-11-2016'
  19.     fluentIn: [ 
  20.       'English'
  21.       'French'
  22.       'German' 
  23.     ] 
  24.   }, { 
  25.     userId: 3, 
  26.     userName: 'Bradley Stark'
  27.     memberSince: '29-08-2013'
  28.     fluentIn: [ 
  29.       'Czech'
  30.       'English'
  31.       'Polish' 
  32.     ] 
  33.   }, { 
  34.     userId: 4, 
  35.     userName: 'Hirohiro Matumoto'
  36.     memberSince: '08-05-2015'
  37.     fluentIn: [ 
  38.       'Chinese'
  39.       'English'
  40.       'German'
  41.       'Japanese' 
  42.     ] 
  43.   } 
  44. ]; 
  45.  
  46. // Bad 
  47. class CarouselLeftArrow extends Component{render(){return ( <a href="#" className="carousel__arrow carousel__arrow--left" onClick={this.props.onClick}> <span className="fa fa-2x fa-angle-left"/> </a> );}}; 
  48.  
  49. // Better 
  50. class CarouselLeftArrow extends Component { 
  51.   render() { 
  52.     return ( 
  53.       <a 
  54.         href="#" 
  55.         className="carousel__arrow carousel__arrow--left" 
  56.         onClick={this.props.onClick} 
  57.       > 
  58.         <span className="fa fa-2x fa-angle-left" /> 
  59.       </a> 
  60.     ); 
  61.   } 
  62. }; 

 

2.為變量、函數和方法使用有意義的名稱

來看一看第二個技巧,它將幫助我們編寫可理解和干凈的代碼。這個技巧是關于變量、函數和方法的有意義的名稱。“有意義的”是什么意思?有意義的名字是描述性足夠多的名字,而不僅僅是編寫者自己才能夠理解的變量、函數或方法。換句話說,名稱本身應該根據變量、函數或方法的內容和使用方式來定義。

 

  1. // Bad 
  2. const fnm = ‘Tom’; 
  3. const lnm = ‘Hanks’ 
  4. const x = 31; 
  5. const l = lstnm.length; 
  6. const boo = false
  7. const curr = true
  8. const sfn = ‘Remember the name’; 
  9. const dbl = [‘1984’, ‘1987’, ‘1989’, ‘1991’].map((i) => { 
  10.   return i * 2; 
  11. }); 
  12.  
  13. // Better 
  14. const firstName = ‘Tom’; 
  15. const lastName = ‘Hanks’ 
  16. const age = 31; 
  17. const lastNameLength = lastName.length; 
  18. const isComplete = false
  19. const isCurrentlyActive = true
  20. const songFileName = ‘Remember the name’; 
  21. const yearsDoubled = [‘1984’, ‘1987’, ‘1989’, ‘1991’].map((year) => { 
  22.   return year * 2; 
  23. }); 

 

然而需要注意的是,使用描述性名稱并不意味著可以隨意使用任意多個字符。一個好的經驗則是將名字限制在3或4個單詞。如果需要使用超過4個單詞,說明這個函數或方法需要同時執行很多的任務,所以應該簡化代碼,只使用必要的字符。

3.讓一個函數或方法只執行一個任務

當開始編寫代碼時,使用的函數和方法看起來就像一把瑞士軍刀,幾乎可以處理任何事情,但是很難找到一個好的命名。另外,除了編寫者,幾乎沒有人知道函數是用來做什么的以及該如何使用它。有時我就會遇到這些問題,我在這方面做的很不好。

然后,有人提出了一個很好的建議:讓每個函數或方法只執行一個任務。這個簡單的建議改變了一切,幫助我寫出了干凈的代碼,至少比以前更干凈了。從那以后,其他人終于能夠理解我的代碼了,或者說,他們不需要像以前一樣花很多時間去讀懂代碼了,功能和方法也變得更好理解。在相同的輸入下,總是能產生相同的輸出,而且,命名也變得容易得多。

如果你很難找到函數和方法的描述性名稱,或者需要編寫冗長的指令以便其他人可以使用,那請考慮這個建議,讓每個函數或方法只執行一個任務。如果你的功能和方法看起來像瑞士軍刀一樣無所不能,那請你執行這個方法,相信我,這種多才多藝不是一種優勢。這是一個相當不利的情況,可能會產生事與愿違的結果。

附注:這種讓每一個函數或方法只執行一項任務的做法被稱為保持純函數。這種編碼實踐來自于函數式編程的概念。如果你想了解更多,我推薦閱讀《So You Want to be a Functional Programmer series[4]》。

 

  1. // Examples of pure functions 
  2. function subtract(x, y) { 
  3.     return x - y; 
  4.  
  5. function multiply(x, y) { 
  6.     return x * y; 
  7.  
  8. // Double numbers in an array 
  9. function doubleArray(array) { 
  10.   return array.map(number => number * 2) 

 

4.更容易遵循編碼模式

不管多么努力地為變量、函數和方法想出有意義的名字,代碼仍然不可能完全清晰易懂,還有一些思路需要進行解釋。問題可能不是代碼很難理解或使用,相反,其他人可能不理解為什么要實現這個函數或方法,或者為什么要以特定的方式創建它。意思是,創建函數或方法的意圖還不清楚。

有時可能不得不采用非傳統的方法來解決問題,因為沒有足夠的時間來想出更好的解決方案,這也很難用代碼來解釋。所以,通過代碼注釋可以幫助解決這個問題,也可以幫助我們向其他人解釋為什么寫了這個方法,為什么要用這種特定的方式來寫,那么其他人就不必猜測這些方法或函數的用途了。

更重要的是,當我們使用注來解釋代碼后,其他人可能會找到一個更好的方法來解決這個問題并改進代碼。這是有可能的,因為他們知道問題是什么,以及期望的結果是什么。如果不知道這些信息,其他人就很難創建更好的解決方案,或者他們可能不會去嘗試,因為他們認為沒有必要去修改創建者自己的想法。

因此,每當自己決定使用一些快速修復或非傳統的方法時,要用注釋來解釋為什么這么做。最好是用一兩行注釋來解釋,而不用別人來猜測。

也就是說,我們應該只在必要的時候使用注釋,而不是解釋糟糕的代碼。編寫無窮無盡的注釋將無助于將糟糕的代碼轉換成干凈的代碼。如果代碼不好,應該通過改進代碼來解決這個問題,而不是添加一些如何使用它的說明。編寫干凈的代碼更重要。

5.保持代碼風格一致性

當我們有自己喜歡的特定編碼方式或風格時,就會在任何地方一直使用它。但在不同的項目中使用不同的編碼風格不是一個好主意,而且也不可能很自然地回到以前的代碼,所以仍然需要一些時間來理解在項目中使用的編碼風格。

最好的方法是選擇一套編碼方式,然后在所有的項目中堅持使用。這樣的話,回到之前的舊代碼會變得更容易。當然,嘗試新的編碼方式是一件好事,它可以幫助我們找到更好的方法來開展工作。但是最好是在不同的實驗項目或練習上嘗試不同的編碼風格,而不是在主要項目上進行。

另外,當我們決定做一些試驗的時候,就應該嘗試多次練習,應該花時間徹底地做好。只有真正確信喜歡這種做法,并且對它感到滿意時,才應該去實施它。而且決定這樣做的時候,最好應用在所有的項目中。是的,這需要時間,這也會促使我們正確地思考。

6.檢查你的代碼

這是最后一個技巧。不僅僅是編寫干凈的代碼,還要完成最后的工作,那就是需要維護干凈代碼。我們應該定期檢查代碼,并試著改進它。否則,如果不審查和更新我們的舊代碼,它很快就會過時,就像我們的設備一樣。如果想讓代碼保持最佳狀態,就需要定期更新它們。

對于每天使用的代碼,情況也是如此。代碼會變得更加復雜和混亂,所有應該避免這種情況發生,并保持代碼干凈。實現這一點的唯一方法是定期檢查我們的代碼。換句話說,我們需要保持它。對于那些未來不再關心的項目來說,這可能是不必要的,但對其他的來說,維護代碼是工作的一部分。

關于編寫干凈代碼的一些想法

今天討論的這六種做法,可能不是影響最大的,也可能不是最重要的,但這些是經驗豐富的開發人員最常提到的,這也就是我選擇它們的原因。我希望這些實踐或技巧能夠幫助你開始編寫干凈的代碼。現在,就像所有的事情一樣,最重要的是開始。所以,至少選一個技巧,然后試一試。

責任編輯:未麗燕 來源: ITeye
相關推薦

2020-05-27 10:38:16

開發代碼技巧

2020-07-15 14:51:39

代碼C+開發

2023-03-27 15:05:10

Python技巧

2022-07-18 10:15:16

Python

2022-06-07 09:30:35

JavaScript變量名參數

2020-08-27 07:00:00

代碼軟件應用程序

2014-07-29 13:55:10

程序員代碼

2014-08-11 12:54:27

構建模塊代碼審查編程

2024-06-24 10:31:46

2025-01-14 00:01:01

2017-11-16 15:18:42

Clean Code技巧代碼

2023-01-27 14:53:03

2020-05-08 19:52:31

Reactreact.js前端

2021-02-23 10:48:30

Python代碼開發

2024-01-30 08:54:05

JavaScript技巧代碼

2020-08-06 16:34:48

Python開發工具

2024-02-23 08:00:00

2024-04-09 14:27:39

2020-06-23 07:50:13

Python開發技術

2023-07-30 17:10:32

TypeScript開發
點贊
收藏

51CTO技術棧公眾號

久久精品国产亚洲精品2020| av成人在线播放| 精品国产乱码久久久久久久| 欧美性videos| 亚洲日本成人女熟在线观看| 成人在线国产| 98精品国产高清在线xxxx天堂| 丁香5月婷婷久久| 日韩在线视频导航| 女同互忝互慰dv毛片观看| 欧美人牲a欧美精品| 手机在线观看av网站| 欧美黑人一区二区三区| 你懂的视频一区二区| 欧美一区二区在线| 日韩高清不卡一区二区三区| 在线无限看免费粉色视频| 国产一区二区三区在线观看免费视频| 日本搞黄视频| 日韩国产精品一区| 91精品国产麻豆国产在线观看| 人妻av中文系列| 蜜桃国内精品久久久久软件9| 国产原创欧美精品| 久久激情五月激情| 97国产精东麻豆人妻电影| 精品精品国产高清a毛片牛牛| 成人中文在线| 五月综合网站| 麻豆国产va免费精品高清在线| 国产麻豆综合| a天堂在线资源| 日韩av电影院| 麻豆成人精品| 成人欧美一区二区三区的电影| 91嫩草在线| 日本视频在线一区| 国产精品伦一区二区| 免费观看日韩毛片| 美女精品久久久| 乱码第一页成人| 国产精品剧情一区二区在线观看 | 国产在线一二| 激情视频一区二区| 中文字幕视频在线免费欧美日韩综合在线看 | 美国成人av| 免费无码国产v片在线观看| 国产成人精品日本亚洲专区61| 色婷婷av一区二区三区大白胸| 国产精品成人av| 婷婷五月在线视频| 国产在线精品一区| 亚洲国产三级在线| 亚洲成av人电影| 在线免费中文字幕| 国产精品自产拍高潮在线观看| 亚洲一区av在线| 欧洲乱码伦视频免费| 中文字幕av在线| 高清无码视频直接看| 亚洲一区在线免费| 亚洲影院色无极综合| 日韩精品视频在线| 成人国产精品免费观看视频| 婷婷精品在线观看| 免费av毛片在线看| 欧美二区在线视频| 日本成人看片网址| 国产成人啪精品视频免费网| 午夜精品一区二区三区在线视频| 日本亚洲天堂网| 毛片在线播放a| 114国产精品久久免费观看| 国产不卡一区视频| 国产一区二区三区视频在线播放| 免费看黄色91| 国产综合网站| 日本欧美韩国| 午夜影院免费在线| 婷婷六月激情| 青青青青在线视频| 精品欧美一区二区久久| 精品日本高清在线播放| 日本最新不卡在线| 在线精品国产| 国产成人精品亚洲日本在线观看| 国产 日韩 亚洲 欧美| 国产精品在线看| 亚洲人午夜精品| 懂色av影视一区二区三区| 国产成人aaa| 国产一区不卡| 日韩电影大全网站| 二区三区在线观看| 亚洲欧美国产中文| 亚洲狠狠婷婷综合久久久| 97在线看免费观看视频在线观看| 成人欧美一区二区三区黑人孕妇| **欧美日韩vr在线| 日韩在线观看高清| 最新中文字幕亚洲| 欧美在线|欧美| 午夜久久久久久久久| 97久久超碰国产精品电影| 国产精品久久久久久久久久免费看 | av激情综合网| 欧美日韩在线播放三区四区| 国产一区二区动漫| 一区二区中文字幕| 美女av一区二区三区| 亚洲欧美日韩爽爽影院| 亚洲护士老师的毛茸茸最新章节| 日韩一区在线看| 国产精品99久久久久久有的能看| 久久xxxx精品视频| 成人一级黄色片| 91在线视频免费91| 亚洲欧美日韩国产一区二区三区 | 日本成本人片免费观看| 成人在线资源网址| 国产精品美女呻吟| 欧洲视频一区二区三区| caoporn97免费视频公开| aaa在线观看| 在线成人动漫av| 国产精品普通话对白| 专区另类欧美日韩| 91啪亚洲精品| 久久电影网站中文字幕| 欧美aaa在线| 99久久久免费精品国产一区二区 | 亚洲精品在线免费看| 日韩精品一区二区三区中文精品 | 日韩精品中文字幕有码专区| 卡一卡二国产精品 | 亚洲成人一二三| 处破女av一区二区| 要久久爱电视剧全集完整观看 | 超碰在线图片| 99久久精品一区二区成人| 日本精品网站| 免费观看日韩电影| 欧美hdxxxxx| 国产精品xxxav免费视频| 99久久免费精品| 一区二区三区视频观看| 久久av二区| 国产在线观看a| 雨宫琴音一区二区在线| 亚洲色图在线视频| 精品国产成人系列| 色狠狠久久av五月综合|| 国产鲁鲁视频在线观看免费| 国产一区日韩| 国产精品日日摸夜夜摸av| 天天综合色天天综合色h| 欧美日韩中文另类| 中文欧美在线视频| 在线播放亚洲激情| 自拍亚洲一区欧美另类| 欧美mv和日韩mv的网站| 亚洲免费在线观看视频| 亚洲男同性恋视频| 欧美精品18+| 国产精品久久视频| 啪一啪鲁一鲁2019在线视频| 国产精品美女久久久久久免费| 麻豆影视在线观看| 亚洲激情午夜| 精品亚洲永久免费精品 | 国产精品美女视频| 热草久综合在线| 国产精品实拍| 久久精品免费看| 国产91精品在线播放| 波多野结衣中文字幕久久| 一区二区久久久久| 黄色一级片播放| 国产精品成久久久久| 在线观看日韩视频| 超碰在线caoporen| 一区二区国产视频| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 91精品成人| 欧美一级成年大片在线观看| av大片在线| 欧美在线一二三四区| 领导边摸边吃奶边做爽在线观看| 9i在线看片成人免费| 中国老女人av| 男人的j进女人的j一区| 久久99国产精品99久久| 午夜日韩在线| 成人av蜜桃| 亚洲美女主播视频免费观看| 日韩中文字幕一区二区高清99| 69精品人人人人| 玖玖在线免费视频| 中日韩av电影| 日本www在线播放|