老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

JavaScript中使用代碼注釋的注意事項

這篇文章主要介紹了JavaScript中使用代碼注釋的注意事項,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

公司主營業務:網站建設、成都網站制作、移動網站開發等業務。幫助企業客戶真正實現互聯網宣傳,提高企業的競爭能力。創新互聯是一支青春激揚、勤奮敬業、活力青春激揚、勤奮敬業、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創新互聯推出壽寧免費做網站回饋大家。

自動生成的注釋

代碼注釋的泛濫想必是從Eclipse,Visual Studio等IDE開始的。 這些IDE提供了很多快捷功能,生成類/接口的骨架,具有Getter/Setter的屬性等等。 如果用過IDE,下面的代碼你一定不會陌生:

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}

上述6行代碼中的4行注釋包含的信息量是0,既沒有闡釋參數args是何物,也沒有說明main的用途。 然而大量的項目中都充斥著這樣的自動生成注釋。

『建議』:如果有參數或機制需要說明,請補充這些信息。否則請刪除自動生成注釋。 當然,用于生成文檔的注釋除外。

過多的注釋

總會有人不厭其煩地編寫長篇累牘的注釋,或無微不至,或語焉不詳,或晦澀難懂,或文采飛揚。 總之沒有幫助我更快閱讀代碼的注釋都是失敗的注釋。

為了說明問題,Harttle克隆了4.x Linux Kernel源碼, 來大致分析一下其注釋行數。 我們知道內核代碼95%以上是C語言,所以統計.c文件就足夠說明問題了。

? linux git:(master) git clone git@github.com:torvalds/linux.git --depth=1
? linux git:(master) find . -name "*.c" -o -name "*.h" -exec grep -E '^\s*((\*)|(/[/*]))' {} \; | wc -l
724804
? linux git:(master) find . -name "*.c" -o -name "*.h" -exec cat {} \; | wc -l
4018961
? linux git:(master) node
> 724804/(4018961-724804)
0.22002715717556875

內核倉庫中的代碼大概是402萬行(未移除空行),其中注釋72萬行,占比22%。 Linux內核使用低級的C語言編寫,涉及到復雜的CPU調度、內存管理,驅動程序。 因此注釋會偏多一些,一般的項目注釋應小于這個數值。

『建議』:如果你的代碼中注釋超過了20%,那么顯然你過度注釋了。

文件頭注釋

很多編輯器/IDE都會生成默認的文件頭,例如:

/**
* @file /tmp/xxx.js
* @author harttle(yangjvn@126.com)
* @date 2016-08-30 22:33
* @description A XXX Implementation for XXX.
*/

文件頭注釋清晰地列出了文件的作者、功能描述等信息,看起來很有用。 不過這樣的文件頭存在的問題在于其維護性:

  • 其他人做小的修改時未必會修改@author,甚至連@author都不知道現在該文件已經面目全非。

  • 每次移動該文件,是否還需要花功夫更新 @file 信息?

  • 誰會在每次代碼修改后記得更新 @description,于是@description也總是誤導讀者

文件頭注釋意在維護代碼文件的元信息,以便在分發和部署過程中維護作者版權等信息。 然而在擁有版本控制的代碼倉庫中,這些信息不再需要手動維護,甚至可以通過git blame查看每一行代碼的作者和時間信息。

『建議』:使用版本控制工具,刪除文件頭注釋。版權信息可在構建或分發時生成。

冗余的注釋

意圖非常清楚的代碼原則上不需要注釋,多余的注釋反而會造成維護性問題。 尤其是非英語母語的作者常常會掉到這個坑里。比如變量和函數的注釋:

/*
* 獲取用戶數目
*/
function getUserCount(){
// 用戶的列表
var userList = [];
}

這不是廢話么!冗余的注釋問題仍然在于維護性,例如調整函數功能、調整參數順序, 或者更換變量名時我們不得不更新這些注釋。否則這些注釋就會誤導下一個讀者。

【建議】:不說廢話。

抽取注釋到標識符

可能讀者也會有這樣的經驗:當我們寫了一大段代碼時,往往需要把它們分為幾塊。 然后在每一塊開頭添加一段注釋。例如:

function calcTotalCharge(movies, user){
// Calculate Movie Charge
var movieCharge = 0;
for(var i=0; i

上述代碼中的三段注釋確實加速了閱讀代碼的速度, 但每當代碼需要注釋才能讀懂時就應該警醒:是不是結構設計有問題。 對于上述代碼,我們可以通過更加可復用的結構來消除注釋:

function calcTotalCharge(movies, user){
return calcMovieCharge(movies) + calcUserCharge(user);
}
function calcMovieCharge(movies){
var total = 0;
for(var i=0; i

代碼重構之后原來的注釋就變得毫無意義,代碼意圖都被清晰的表述在標識符的命名中。 通常重構會帶來代碼量的減小,因為封裝了分支、每個單元的邏輯也更加明確。

【建議】:當我們發現不得不進行注釋時,需要警醒是否結構設計發生了問題。

有用的注釋

至此Harttle已描述了這么多反模式,并非為了說明代碼注釋不重要。 而是為了說明『代碼注釋存在的意義在于幫助理解代碼本身』。 例如在編寫一些Trick,Polyfill,臨時代碼,以及復雜算法時,注釋變得相當重要。 例如:

  • Tricks and Polyfills。有時簡單的Trick就可解決多數問題問題, 為沒必要編寫復雜的普適算法, 例如檢測瀏覽器的DOM API支持,檢測AMD/CommonJS環境等等。 這時我們需要清晰地說明這些Trick的意圖,甚至可以將這些代碼抽離為polyfill模塊。

  • 復雜算法。有時我們會編寫數學性非常強的算法,一眼望去不知所云。 在開始這些算法前清晰地說明其意圖何在,讀者也就不必花大功夫讀懂這些數學了。

  • 公有接口。模塊的對外接口從邏輯上定義了模塊類型,公有接口代碼也更容易被人讀到。 尤其是JavaScript接口:如果不注釋options中到底是什么,誰曉得接口如何使用。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“JavaScript中使用代碼注釋的注意事項”這篇文章對大家有幫助,同時也希望大家多多支持創新互聯,關注創新互聯行業資訊頻道,更多相關知識等著你來學習!


新聞標題:JavaScript中使用代碼注釋的注意事項
文章分享:http://www.xueling.net.cn/article/ieijop.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 男女边吃奶边做边爱视频 | 4438亚洲 | 精品人妻系列无码人妻不卡 | 欧美四区 | 亚洲精品在线影院 | 在线中文字幕乱码英文字幕正常 | 无码H黄肉动漫在线观看 | 欧美韩一级片 | 国产精品入口夜色视频大尺度 | 国产一级黄色片免费看 | 女18一级大黄毛片免费女人 | 婷婷色五月综合久久 | 黄色aa级片| 粗大黑人巨精大战欧美成人 | 国产精品96久久久久久吹潮 | 近乱中文字幕视频 | 在线观看日本www | 超碰91人人| 亚洲AV乱码专区国产乱码 | 成全视频高清免费观看在线 | 免费观看老外一级毛片视频 | 成人网页在线观看 | 伊人操操| 日本一区二区视频 | 色国产精品一区在线观看 | 国产一二 | 远方的山楂树免费观看视频48集 | 蜜桃一级片 | 视频一区二区国产 | 又爽又黄又无遮挡的视频在线观看 | 欧洲伊人网 | 国产成人看片 | 日韩处女网站 | 亚洲大香线伊人婷婷五月 | 永久视频在线观看 | 午夜亚洲AV永久无码精品 | 亚洲天天在线日亚洲洲精 | 孕交VIDEOSGRATIS孕妇性欧美 | 西西人体大胆扒开下部337卩 | 国产精品视频玖玖国产 | 日本不卡在线观看视频 |