成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

代碼是靈魂,注釋是心聲

開(kāi)發(fā) 前端
在以前一些關(guān)于代碼注釋的文章中,我發(fā)現(xiàn),你不需要的注釋才是最好的注釋。不要急著批判,請(qǐng)?jiān)试S我闡述一下。首先代碼應(yīng)該盡量地簡(jiǎn)潔,盡可能地做到不需要依賴(lài)注釋就可以理解。只有那些真的沒(méi)法更易于理解的代碼,才需要我們添加注釋。

在以前一些關(guān)于代碼注釋的文章中,我發(fā)現(xiàn),你不需要的注釋才是***的注釋。不要急著批判,請(qǐng)?jiān)试S我闡述一下。首先代碼應(yīng)該盡量地簡(jiǎn)潔,盡可能地做到不需要依賴(lài)注釋就可以理解。只有那些真的沒(méi)法更易于理解的代碼,才需要我們添加注釋。

有一本非常經(jīng)典的書(shū)叫《Structure and Interpretation of Computer Programs》(《電腦程序的結(jié)構(gòu)和編譯》),最初發(fā)表于1985年,在序言中就表明其觀點(diǎn):

程序必須能便于我們閱讀,讓機(jī)器執(zhí)行只是附帶的。

Knuth也在他1984年發(fā)表的經(jīng)典論文《Literate Programming》(《文學(xué)編程》)中秉持了類(lèi)似的觀點(diǎn):

我們應(yīng)該轉(zhuǎn)變傳統(tǒng)的思維,程序不再是告訴計(jì)算機(jī)做什么的指令,而是向人類(lèi)描述如何讓計(jì)算機(jī)做事情的文字,編程像寫(xiě)文章一樣。

文學(xué)編程關(guān)注的主要是展現(xiàn)精致的風(fēng)格。程序員應(yīng)該像作家一樣,認(rèn)真地選擇變量名,并解釋每個(gè)變量的意思,努力寫(xiě)出易于人腦理解的程序。

如果你寫(xiě)出來(lái)的代碼,既能被其他程序員理解又能成功編譯,那么需要添加注釋的地方肯定就不會(huì)很多。關(guān)于使用注釋作為輔助工具,下面就是一個(gè)頗具代表意義的例子:

這段代碼取自一個(gè)已經(jīng)使用多年、閉源了的系統(tǒng)。

  1. float _x = abs(x - deviceInfo->position.x) / scale; 
  2. int directionCode; 
  3. if (0 < _x & x != deviceInfo->position.x) { 
  4.     if (0 > x - deviceInfo->position.x) { 
  5.         directionCode = 0x04 /*left*/; 
  6.     } else if (0 < x - deviceInfo->position.x) { 
  7.         directionCode = 0x02 /*right*/; 
  8.     } 

上面的代碼等同于下面的代碼,但是下面的代碼可讀性更高。

  1. static const int DIRECTIONCODE_RIGHT = 0x02
  2.  
  3. static const int DIRECTIONCODE_LEFT = 0x04
  4.  
  5. static const int DIRECTIONCODE_NONE = 0x00
  6.  
  7. int oldX = deviceInfo->position.x; 
  8.  
  9. int directionCode = (x > oldX) ? DIRECTIONCODE_RIGHT : (x > oldX) ? DIRECTIONCODE_LEFT : DIRECTIONCODE_NONE; 

需要注意的是,注釋的越多并不意味著代碼的理解性更強(qiáng)。當(dāng)然在本案例中并沒(méi)有涉及到這一點(diǎn)。上面的注釋——如果你注意到的話——使得代碼更加顯得凌亂不堪。有時(shí)候,注釋得越精簡(jiǎn)代碼的可讀性才越高。特別是在你必須更換使用其他符號(hào)名的情況下。

雖然我們能無(wú)限次地重構(gòu)和精簡(jiǎn)代碼以避免寫(xiě)繁冗的注釋?zhuān)潜硎鲎约旱乃伎歼^(guò)程的方式卻是有局限性的。

無(wú)論***你呈現(xiàn)的代碼是有多么的簡(jiǎn)潔和清楚,代碼也不可能完全自文檔化。但是代碼永遠(yuǎn)也不可能取締注釋的存在。正如Jef Raskin所說(shuō):

[代碼]無(wú)法解釋如此寫(xiě)程序以及選擇該方法的原因。從[代碼]上我們也看不出選擇某些替代方法的理由。例如:

  1. /* A binary search turned out to be slower than the Boyer-Moore algorithm for the data sets of interest, thus we have used the more complex, but faster method even though this problem does not at first seem amenable to a string search technique. */ 

在A開(kāi)發(fā)人員看來(lái)完全顯而易見(jiàn)的東西,可能在B眼里完全就像霧里看花一樣。所以我們?cè)趯?xiě)注釋的時(shí)候,也要考慮到這一點(diǎn):

下面這個(gè)可能你一清二楚

  1. $string = join('',reverse(split('',$string))); 

反轉(zhuǎn)字符串,但是要如何才能插入到

  1. # Reverse the string 

Perl文件中呢?

的確,這一點(diǎn)都不難。歸根究底,代碼只會(huì)告訴你程序是如何工作的,但是注釋則能說(shuō)明工作的原因。所以,下次你寫(xiě)代碼的時(shí)候,不妨在這兩個(gè)方面給你的同事做個(gè)榜樣。

譯文鏈接:http://www.codeceo.com/article/code-and-comment.html
英文原文:Code Tells You How, Comments Tell You Why
責(zé)任編輯:張偉 來(lái)源: 碼農(nóng)網(wǎng)
相關(guān)推薦

2012-06-20 10:01:55

開(kāi)源云計(jì)算

2020-06-02 07:44:04

AQS JavaNode

2018-12-19 17:20:17

2009-08-10 08:52:23

Windows 7企業(yè)部署新特性

2019-11-19 10:32:55

Java語(yǔ)言程序員

2019-03-29 08:12:54

嵌入式系統(tǒng)物聯(lián)網(wǎng)硬件物聯(lián)網(wǎng)

2024-10-29 09:25:00

2009-06-11 17:37:32

EJB注釋

2015-03-16 13:09:12

微軟Windows AzuISV

2020-12-21 14:46:56

代碼開(kāi)發(fā)程序員

2013-07-12 10:24:46

IBM2013技術(shù)峰

2015-07-29 11:27:28

大數(shù)據(jù)時(shí)代數(shù)據(jù)分析統(tǒng)計(jì)學(xué)

2015-08-17 09:43:08

2013-09-11 09:43:06

蘋(píng)果安卓

2024-08-28 10:04:17

2011-09-05 10:30:51

重構(gòu)代碼庫(kù)業(yè)務(wù)模型

2019-07-29 10:10:06

Java內(nèi)存線程安全

2011-01-19 10:13:20

FaceBook代碼業(yè)界

2020-09-08 12:51:35

低代碼開(kāi) 發(fā)代碼平臺(tái)

2015-11-10 09:09:23

代碼程序員成長(zhǎng)
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 五月天天丁香婷婷在线中 | 久久久无码精品亚洲日韩按摩 | 欧美精品啪啪 | 综合国产 | 波多野结衣精品 | 久久99蜜桃综合影院免费观看 | 狠狠骚| 一级黄色录像毛片 | 国产一级一级毛片 | 久久久久国产一区二区三区 | 国产精品久久久久久一区二区三区 | 亚洲一区二区免费 | 麻豆视频在线免费观看 | 欧美日韩精品久久久免费观看 | 日韩成年人视频在线 | 午夜影院在线观看 | 亚洲人成免费 | 91在线一区 | 91视在线国内在线播放酒店 | 久久精品国产v日韩v亚洲 | 91精品国产高清一区二区三区 | 亚洲精品久久久一区二区三区 | 欧洲妇女成人淫片aaa视频 | 国产欧美日韩综合精品一区二区 | 黄网免费 | 一区二区久久 | 国产精品欧美一区二区三区 | 亚洲福利一区 | 一级a性色生活片久久毛片 午夜精品在线观看 | 日韩不卡视频在线 | 97碰碰碰 | 狠狠狠| 高清黄色 | 天天搞天天操 | 免费在线观看成年人视频 | 中国黄色毛片视频 | 成人免费一区二区 | 欧美一页 | 亚洲 欧美 日韩 在线 | 久久手机视频 | 美女久久 |