自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

什么時(shí)候應(yīng)該避免注釋代碼?

開發(fā) 后端 前端
看到標(biāo)題,我知道你可能會(huì)想:“我為什么要避免代碼注釋,這難道不是一件好事嗎?”。是的,寫注釋在大多數(shù)情況下是有用的。但是,請(qǐng)注意,我說的是“在大多數(shù)情況下”,因?yàn)橛幸恍┣闆r下,你不應(yīng)該寫注釋。

看到標(biāo)題,我知道你可能會(huì)想:“我為什么要避免代碼注釋,這難道不是一件好事嗎?”。是的,寫注釋在大多數(shù)情況下是有用的。但是,請(qǐng)注意,我說的是“在大多數(shù)情況下”,因?yàn)橛幸恍┣闆r下,你不應(yīng)該寫注釋。

還不相信?那讓我告訴你:寫注釋有時(shí)會(huì)壞事!會(huì)導(dǎo)致壞代碼!

請(qǐng)?jiān)试S我用一句名言來開始我的論證:

不要注釋壞代碼——重寫吧。——Brian W. Kernighan and P. J. Plaugher

這句話給我流下了非常深刻的印象。仔細(xì)想一想,有多少次你注釋你的代碼,只是因?yàn)閾?dān)心自己將來再回過頭來閱讀的時(shí)候可能會(huì)不理解它的意思?至少都做過一次吧。坦率地說,我有很多次是因?yàn)檫@個(gè)原因才注釋的,尤其是在那些我還是重構(gòu)和編寫干凈代碼的新手的日子里。

[[153302]]

那么,為什么這樣的注釋反而不好呢?簡(jiǎn)而言之是因?yàn)?,我們?huì)因?yàn)橛凶⑨尪湃尉帉憠牡拇a!正如你所看到的,注釋有時(shí)候反而激勵(lì)了我們?nèi)懸恍┎徽麧嵉拇a。

另一個(gè)原因是因?yàn)樽⑨寱?huì)誤導(dǎo)我們。有多少次你已經(jīng)改變了代碼,卻忘了改旁邊的注釋?別否認(rèn),這種事時(shí)常發(fā)生。這就是為什么你經(jīng)常聽到這樣一句話,“真理只存在于代碼中”。

那么,什么時(shí)候你不應(yīng)該寫注釋呢?

有一個(gè)經(jīng)驗(yàn)法則就是,無論何時(shí)你發(fā)現(xiàn)自己要使用注釋來解釋這段代碼是用來干什么的時(shí)候,那么基本上就是你的代碼需要重構(gòu)以變得更整潔的時(shí)候。

典型的解決方案

現(xiàn)在你知道為什么有時(shí)候反而要避免寫注釋了,那么有什么解決辦法嗎。事實(shí)上,目前還沒有一個(gè)有效的解決方案,但是你可以清潔你的代碼,這樣你(以及其他人)就可以在沒有注釋的情況下也能理解它了。

為了用可讀的代碼替換掉注釋,通常我們的典型解決方法是使用提取方法重構(gòu)(Extract Method refactoring)。這種重構(gòu)方式是我最喜歡的。對(duì)此我也寫過一篇博客,里面有完整的例子:《Break Your Method Into Smaller Ones》。

下面讓我們看一個(gè)簡(jiǎn)單說明如何提高你的代碼,從而解放注釋的例子。

 

  1. <php 
  2.  
  3. // Check to see if the customer can get free product 
  4. if ($customer->isPremium() and $customer->numberOfPurchases > 8) { 
  5.  
  6.  
  7. // OR 
  8.  
  9. if ($customer->canGetFreeProduct()) { 
  10.  

我希望你能注意到這兩個(gè)條件語句之間的差異。哪一個(gè)更整潔?很明顯第二個(gè)更整潔,更好。這是因?yàn)?,首先,可以刪除注釋,因?yàn)槲覀兛创a就明白了意 思。其次,也是最重要的一點(diǎn)是,我們提取了檢查客戶是否值得獲得免費(fèi)產(chǎn)品的邏輯到它的方法中,這是一件好事,特別是當(dāng)你想要在應(yīng)用程序中再次使用它的話。

對(duì)于更詳細(xì)的例子,我推薦你閱讀我以前發(fā)表過的文章。

結(jié)論

請(qǐng)?jiān)试S我用一個(gè)免責(zé)說明來結(jié)束這篇文章。我不反對(duì)注釋。注釋在大多數(shù)情況下是非常有用的,尤其是在開源項(xiàng)目中。

我想說的是,你不應(yīng)該為你的壞代碼注釋。請(qǐng)記住,“真理只存在于代碼中”。

譯文鏈接:http://www.codeceo.com/article/when-avoid-comment-code.html
英文原文:When Should You Avoid Commenting Your Code?

 

責(zé)任編輯:王雪燕 來源: 碼農(nóng)網(wǎng)
相關(guān)推薦

2015-10-20 15:59:57

注釋代碼程序

2012-07-26 10:27:31

PHP

2023-03-29 15:01:43

微服務(wù)開發(fā)

2022-09-27 15:06:07

微服務(wù)架構(gòu)開發(fā)

2015-08-20 09:06:48

程序員

2010-11-09 13:58:03

SQL Server鎖

2024-09-02 08:53:44

2020-06-17 10:35:16

機(jī)器學(xué)習(xí)AI人工智能

2023-04-24 14:32:54

2020-05-12 11:25:50

MySQLES數(shù)據(jù)庫(kù)

2017-05-15 09:55:07

2015-07-08 15:55:01

NSStringcopystrong

2023-09-26 11:28:08

代碼注釋軟件開發(fā)

2013-11-28 16:03:24

2012-09-24 10:20:39

JavaScriptJS

2022-05-19 10:27:34

機(jī)器學(xué)習(xí)人工智能

2024-08-05 01:22:16

2020-04-14 12:53:01

Nuxt.jsVue.js前端

2017-06-28 15:06:51

PythonLambda函數(shù)

2021-08-13 11:31:23

HTTP
點(diǎn)贊
收藏

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