婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 代碼中到底應不應當寫注釋?

代碼中到底應不應當寫注釋?

熱門標簽:滄州智能外呼系統收費 電銷機器人怎么收費 忻州外呼系統接口對接 湖北穩定外呼系統 洛陽便宜外呼系統廠家 醫院地圖標注 嘟聲的電銷機器人 地圖標注和圖片標注 語音平臺系統

當很多前輩教育后輩應當多寫注釋的時候,當網絡上充滿了有關程序員從不寫注釋的段子的時候,這是一個非常有爭議的話題。作為一個標題黨,容我先修正一下我的觀點:我認為如果代碼寫得足夠好,那么大多數注釋是多余的,我們應該通過寫出更好的代碼來代替更多注釋。

注釋的確有其用途,但大部分情況下,程序員在濫用注釋。我是反對夾雜在代碼間的注釋的,我認為注釋應當從代碼中獨立出來——通常被稱為文檔。

請看下面一段代碼。

復制代碼 代碼如下:

/* /static/market/checkout.js

2014.7.2 create by orzfly
2014.7.29 update by jysperm: fixbugs

TODO: 這段代碼中注釋太多了,需要移除一些 -- jysperm
*/

var raw_products = req.query['products'].split(',');

// 商品 ID 的數組
var products = []

// 過濾每個參數
for(var i = 0, i raw_products.length, i++) {
    if (!raw_products[i])
        return;

    // 前端傳來的數據中居然會有空格
    if (!raw_products[i].trim())
        return

    /* 2014.7.22: 現在可以使用非數字 ID 了
    // 略過非數字條目
    if (isNan(raw_products[i].trim().toFixed()))
        return;
    */

    products.push(raw_products[i].trim().toFixed());
}

// 總錢數
var sum = 0;

// 計算每個商品的總錢數
for(var i = 0, i products.length, i++) {
    // 從數據庫中查商品信息
    var data = db.product.byID(products[i]);

    // TODO: 誰來寫一下沒查到商品的情況

    // 把商品的價格加到總錢數上, a += b 是 a = a + b 的縮寫
    sum += data.price;
}

你居然花了一半的時間在讀注釋上面,這是多么浪費生命的事情,在代碼中每加一行注釋,都會增加代碼的閱讀成本——即使閱讀者已經了解了注釋所要傳達的精神;同時也會增加維護成本:修改這段代碼的人不得不連同注釋一起修改——而且你不能確定他到底會不會這么做。

所以只有當非常必要的情況下,才應該添加注釋,而且應當言簡意賅。注釋不應當解釋一段代碼在做什么,因為這是每個合格的程序員都應該知道的事情,而是應該解釋這段代碼為什么要這樣做。

由此引出幾種明顯不應該添加的注釋:

本應由版本控制系統記錄的信息、對代碼的評論,以及不是很重要的 TODO.

代碼并不是全部,一個但凡靠譜一點的項目,都應當有自己的版本控制系統,除了記錄代碼差異之外,還應該有工單和 Issue 的功能。
閱讀代碼的人通常不需要了解幾個程序員之間的恩怨,很多時候也不關心這段代碼的歷史,這些信息只會把代碼拖得越來越長。

廢棄的代碼

被棄用的代碼應該被刪掉,這些代碼會非常影響閱讀,而且它們一般又很長。
在絕大多數情況下,被棄用的代碼不會重新派上用場,即使出現了少數情況,你也可以從版本控制系統中找到它們。

對變量和函數名的解釋

這種情況下顯然你需要一個更恰當的名字,如果這個標識符有一個比較小的作用于,你可以使用一個比較長的名字以便容納更多信息。

例如上文中的:

products 應改為 products_id
sum 應改為 total_amount
data 應改為 product_record
對語法的解釋,以及顯而易見的事情

例如上文中的「把商品的價格加到總錢數上, a += b 是 a = a + b 的縮寫」,這顯然是任何一個人都知道的事情。

也許有人愿意通過寫這樣的注釋來梳理思路:

復制代碼 代碼如下:

// 過濾參數:
//    去掉 ID 里的空格
//    去掉非數字 ID
// 循環每一個商品:
//    去數據庫查記錄
//    把商品的價格加到總錢數上

但是當代碼寫完的時候記得刪掉。

對邏輯塊的概括

例如上文中的「過濾每個參數」和「計算每個商品的總錢數」,這情況下通常是你沒有對邏輯進行抽象,具體表現就是像下面這樣:

復制代碼 代碼如下:

// 首先有 25 行代碼去做事情 A
// 然后有 5 行代碼去做事情 B
// 這里有 90 行代碼去做事情 C
// 最后有 45 行代碼去做事情 D

這導致你需要一些注釋來分割這四個部分。如果這四個部分都是一個函數調用的話,那么函數名本身就是對邏輯的一種解釋,讀者可以快速地找到函數 B, 而不必在前 25 行中搜索做事情 B 的五行代碼。

綜上,我對這段代碼的改善意見如下:

復制代碼 代碼如下:

var filterProductID = function(raw_products_id) {
    result = []

    raw_products_id.forEach(function(product_id) {
        if (product_id and product_id.trim())
            products_id.push(product_id.trim().toFixed());
    });

    return result;
};

var getPriceOfProduct = function(id) {
    var product_record = db.product.byID(products[i]);

    if (product_record)
        return product_record.price;
    else
        return 0;
};

var products_id = filterProductID(req.query['products'].split(','));
var tatol_amount = 0;

products_id.forEach(function(product_id) {
    tatol_amount += getPriceOfProduct(product_id);
});

雖然我在以一段虛構的,刻意編造的代碼來佐證我的觀點,但我相信在實際的項目中,同樣可以通過改善代碼來減少注釋,而且總體上來講會節約更多的時間和精力。

您可能感興趣的文章:
  • jQuery 表格隔行變色代碼[修正注釋版]
  • HTML代碼中標簽的全部屬性 中文注釋說明
  • JavaScript 事件監聽實例代碼[兼容IE,firefox] 含注釋
  • FCKeditor 源代碼分析附中文注釋
  • asp.net畫曲線圖(折線圖)代碼 詳細注釋
  • Javascript 倒計時源代碼.(時.分.秒) 詳細注釋版
  • PHP壓縮html網頁代碼(清除空格,換行符,制表符,注釋標記)
  • 網頁中返回頂部代碼(多種方法)另附注釋說明

標簽:內蒙古 96 宜賓 山南 定州 日照 防城港 巴彥淖爾

巨人網絡通訊聲明:本文標題《代碼中到底應不應當寫注釋?》,本文關鍵詞  代碼,中,到底,應不,應當,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《代碼中到底應不應當寫注釋?》相關的同類信息!
  • 本頁收集關于代碼中到底應不應當寫注釋?的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    精品亚洲成a人在线观看| 久久青草国产手机看片福利盒子| 怡红院av一区二区三区| 一区二区中文字幕在线| 一本大道久久a久久综合 | 久久激情综合网| 国产成人一区在线| 久久精品夜色噜噜亚洲aⅴ| 懂色中文一区二区在线播放| 亚洲欧美中日韩| 91精品国产色综合久久不卡电影| 中文字幕一区二区三区视频| 欧美狂野另类xxxxoooo| 亚洲一区二区精品久久av| 午夜欧美在线一二页| 亚洲综合成人网| 色播五月激情综合网| 岛国精品在线观看| 69久久99精品久久久久婷婷| 久久久精品综合| 成人app网站| 久久先锋影音av| 韩国女主播一区| 97精品久久久久中文字幕| 欧美日本精品一区二区三区| 亚洲人成7777| 欧美日韩精品欧美日韩精品| 亚洲综合激情网| 夜夜精品浪潮av一区二区三区| 国产精品亚洲综合一区在线观看| 欧美日韩国产综合一区二区三区 | 日本道色综合久久| 久久夜色精品一区| 久久精品国产精品亚洲红杏| 欧美色精品在线视频| 悠悠色在线精品| 99麻豆久久久国产精品免费优播| 久久色成人在线| 国模冰冰炮一区二区| 日韩欧美一区二区在线视频| 亚洲无人区一区| 一本大道久久a久久精品综合| 日本一区二区三区高清不卡| 激情欧美一区二区| 久久综合久久久久88| 狠狠色丁香婷婷综合| 久久只精品国产| 国产成人在线视频免费播放| 久久蜜桃香蕉精品一区二区三区| 麻豆免费精品视频| 欧美一区二区免费视频| 水野朝阳av一区二区三区| 欧美日韩国产乱码电影| 三级欧美在线一区| 日韩美女一区二区三区| 久久爱www久久做| 精品国产凹凸成av人导航| 美女国产一区二区三区| 日韩精品一区二区三区视频| 精品一区二区三区在线播放视频| 久久无码av三级| 懂色av一区二区三区蜜臀 | 亚洲欧洲日韩av| 在线观看一区日韩| 视频在线观看一区| 2021久久国产精品不只是精品| 国产成人鲁色资源国产91色综| 国产精品久久久久影院亚瑟| 色狠狠一区二区| 欧美一区二区精美| 日日摸夜夜添夜夜添国产精品| 日产国产欧美视频一区精品| 亚洲国产毛片aaaaa无费看| 午夜久久久影院| 六月丁香婷婷色狠狠久久| 国产精品中文字幕一区二区三区| 不卡一区二区三区四区| 日本精品一区二区三区四区的功能| 色婷婷精品大在线视频| 精品处破学生在线二十三| 久久久久国产精品人| 4438成人网| 欧美综合亚洲图片综合区| 国产精品资源在线| 国产一区二区三区蝌蚪| 日韩色在线观看| 国产日韩影视精品| 精品国产乱码久久久久久影片| 亚洲视频一二三区| 中文字幕五月欧美| 久久久精品日韩欧美| 久久国产免费看| 亚洲国产精品成人综合色在线婷婷 | 黄色小说综合网站| 亚洲精品国久久99热| 久久亚洲春色中文字幕久久久| 日韩专区在线视频| 欧美激情在线免费观看| 欧美一区二区三区小说| 99国产精品视频免费观看| 亚洲激情在线播放| 精品在线免费观看| 91亚洲精品久久久蜜桃网站| 一本到不卡免费一区二区| 丁香婷婷综合激情五月色| 欧美日韩在线播放三区| 亚洲综合区在线| 国产精品伊人色| 亚洲国产成人一区二区三区| 欧美在线免费视屏| 国产成人精品亚洲777人妖| 天堂久久久久va久久久久| 1区2区3区欧美| 久久先锋影音av鲁色资源网| 91精品国产欧美日韩| 91免费在线看| 成人激情电影免费在线观看| 久久精品久久综合| 午夜精品国产更新| 亚洲综合偷拍欧美一区色| 国产精品久久久久久久蜜臀| 国产午夜精品一区二区三区嫩草| 337p亚洲精品色噜噜| 欧美日韩国产一区| 欧美日韩在线精品一区二区三区激情 | 日本道色综合久久| 成人av在线资源网站| 国产激情视频一区二区在线观看 | 国产精一区二区三区| 青青草视频一区| 五月激情六月综合| 亚洲影院久久精品| 亚洲综合精品久久| 亚洲国产日产av| 亚洲高清中文字幕| 亚洲一区二区不卡免费| 亚洲一区二区精品久久av| 亚洲成av人片| 婷婷久久综合九色综合绿巨人| 亚洲一区电影777| 亚洲第一久久影院| 日本女人一区二区三区| 秋霞av亚洲一区二区三| 麻豆精品视频在线观看免费| 国产一区二区三区电影在线观看| 国产精品一区二区久久精品爱涩| 国内精品写真在线观看| 国产精品小仙女| 成人高清视频免费观看| 91麻豆精品视频| 欧美日韩激情在线| 日韩美女一区二区三区| 国产视频一区在线观看| 亚洲少妇最新在线视频| 亚洲国产人成综合网站| 蜜桃久久av一区| 成人黄色一级视频| 欧美网站一区二区| 欧美大片在线观看一区| 国产免费观看久久| 亚洲欧美日韩国产综合| 亚洲va欧美va天堂v国产综合| 在线精品亚洲一区二区不卡| 色婷婷综合久久久中文字幕| 欧美日韩高清一区二区三区| 欧美成人aa大片| 国产精品污www在线观看| 国产精品日韩成人| 亚洲成人免费av| 国产毛片精品国产一区二区三区| 成人av网站在线| 69久久夜色精品国产69蝌蚪网| 欧美精品一区二区三区在线播放| 亚洲欧美自拍偷拍色图| 美国毛片一区二区| 91农村精品一区二区在线| 欧美一区二区精品久久911| 国产精品嫩草久久久久| 性做久久久久久久免费看| 国产精品91一区二区| 欧美人伦禁忌dvd放荡欲情| 日本一区二区三区在线不卡| 亚洲成人免费在线| 国产久卡久卡久卡久卡视频精品| 欧美在线一区二区三区| 久久毛片高清国产| 偷拍一区二区三区| 91小宝寻花一区二区三区| 精品少妇一区二区三区在线视频| 亚洲美女免费视频| 成人综合在线观看| 日韩视频一区二区三区| 亚洲美女偷拍久久| 国产成人av电影在线| 91精品欧美综合在线观看最新 | aaa国产一区| 欧美变态tickling挠脚心| 亚洲免费高清视频在线| 国产成人精品www牛牛影视| 欧美丰满嫩嫩电影|