亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

自己總結的C#編碼規范--4.注釋篇

2019-11-17 03:00:23
字體:
來源:轉載
供稿:網友

自己總結的C#編碼規范--4.注釋篇

  • 注釋

注釋毫無疑問是讓別人以最快速度了解你代碼的最快途徑,但寫注釋的目的絕不僅僅是"解釋代碼做了什么",更重要的盡量幫助代碼閱讀者對代碼了解的和作者一樣多。

當你寫代碼時,你腦海里會有很多有價值的信息,但當其他人讀你代碼時,這些信息已經丟失,他們所見到的只是眼前代碼。

  • 注釋約定

如果IDE提供注釋格式,則盡量使用IDE提供的格式,否則使用"http://"來注釋。類、屬性和方法的注釋在Visual Studio中都使用輸入"http:///"自動生成的格式。

  • 類注釋約定

/// <summary>

/// 類說明

/// </summary>

public class BinaryTree

  • 類屬性注釋約定

/// <summary>

/// 屬性說明

/// </summary>

public int NodesCount { get; PRivate set; }

  • 方法注釋約定

/// <summary>

/// 方法說明

/// </summary>

/// <param name="parentNode">參數說明</param>

/// <returns>返回值說明</returns>

public int ComputeChildNodesCount(BinaryNode parentNode)

  • 代碼間注釋約定

  1. 單行注釋,注釋行數<3行時使用

    //單行注釋

  2. 多行注釋,2<注釋行數<=10時使用

    /*多行注釋1

    多行注釋2

    多行注釋3*/

  3. 注釋塊,10<注釋行數時使用,用50個*

    /***************************************************

    * 代碼塊注釋1

    *代碼塊注釋2

    *......

    *代碼塊注釋10

    *代碼塊注釋11

    ***************************************************/

  • 何時寫注釋的約定

  1. 以下三種情況我們需要在所有的類、類屬性和方法都必須按照上述格式編寫注釋
    1. 客戶方對代碼注釋重視程度較高
    2. 我們需要提供代碼注釋自動生成的API文檔。

    1. 目前編寫的是公共核心模塊
  2. 如果客戶方沒有對注釋特殊要求,那么按照下文中討論的只在需要的地方加注釋。不要加無謂的注釋。
  • 常用注釋標識的約定

這里約定下以后團隊常用幾種注釋標識及含義:

//TODO: 我還沒有處理的事情

//FIXME: 已知的問題

//HACK: 對一個問題不得不采用比較粗糙的解決方案

//XXX: 危險!這里有重要的問題

請團隊成員自行在Visual Studio中配置FIXME和XXX為高優先級的Comments.

Steps: Tools->Options->Environment->Task List->Tokens->Add->OK

配置完成后,我們就能在Task List(Ctrl+w,t)窗口中的Comments選項中看到代碼中存在的任務了。

  • 關于何時使用“///”和“//”的約定

a. 對于需要讓調用者知道的信息,使用“///”注釋,以便讓調用者能在調用時看到。

b. 對于代碼內部實現細節,需要維護者知道的注釋,使用“//”。減少調用者閱讀時間。

  • 不需要的注釋

閱讀注釋會占用閱讀真實代碼的時間,并且每條注釋都會占用屏幕上的空間。所以我們約定所加的注釋必須是有意義的注釋,否則不要浪費時間和空間。

區別要不要寫注釋的核心思想就是:不要為那些能快速從代碼本身就推斷的事實寫注釋。

  • 不要為了注釋而注釋

有些人可能以前的公司對于注釋要求很高,如"何時寫注釋"章節中的要求。所以很多人為了寫注釋而注釋。

再沒有特殊要求的情況下我們要禁止寫下面這種沒有意義的注釋。

/// <summary>

/// The class definition for Account

/// </summary>

publicclassBinaryTree

{

/// <summary>

/// Total counts of the nodes

/// </summary>

publicint NodesCount { get; privateset; }

/// <summary>

/// All the nodes in the tree

/// </summary>

publicList<BinaryNode> Nodes { get; set; }

/// <summary>

/// Insert a node to the tree

/// </summary>

/// <param name="node">the node you want insert into the tree</param>

publicvoid InsertNode(BinaryNode node)

  • 不要用注釋來粉飾糟糕的代碼

寫注釋常見的動機之一就是試圖來使糟糕的代碼能讓別人看懂。對于這種"拐杖式注釋",我們不需要,我們要做的是把代碼改的能夠更具有"自我說明性"。

記?。?好代碼>壞代碼+好注釋"

如下面這段函數的注釋

//Enforce limits on the reply as stated in the request

//such as the number of items returned, or total byte size,etc.

publicvoid CleanReply(Request request,Reply reply)

既然知道這個函數名會讓人很難讀懂,那么為什么不直接改好名字呢?這樣所有調用這個函數的地方都能很快速知道這個函數的作用,不用再跟進來看函數的作用。

publicvoid EnforceLimitsFromRequestOnReply(Request request,Reply reply)

  • 日志式注釋

有人喜歡在每次編輯代碼時,都在模塊開始處加一條注釋。這類注釋就像是一種記錄每次修改的日志。在很久以前這種記錄對于維護還有意義。但是對于現在的源碼控制來說,這些記錄完全是冗余的,需要完全廢除。

/***************************************************

* July-29-2014:Fix Bug-12345: Add new method to calculate nodes count

*July-20-2014:Fix Bug-11111: Add Insert new node method

*......

*July-20-2014:Task-00001: Create BinaryTree class

***************************************************/

  • 個人簽名

//Added By XXXX

有人認為這種注釋有助于不了解這段代碼含意的人和他討論。事實上確是這條注釋放在那一年復一年,后來的代碼和原作者寫的源碼越來越不一樣,和XXXX也越來越沒關系。

重申一下,TFS里都能看到這類信息,不要加在代碼里。

  • 位置標識

//AddNodePlace1

//AddNodePlace2

有人喜歡在代碼注釋里加入位置標識以方便他查找代碼的位置。

現在的IDE都集成了這些功能,如VS中可以使用Bookmark(Ctrl+b,t)。

不要將這類注釋加到代碼中。

  • 注釋掉的代碼

直接把代碼注釋掉是非常令人討厭的做法。

其他人不敢刪掉這些代碼。他們會想代碼依然在這一定是有原因的,而且這段代碼很重要,不能刪除。而且每個閱讀代碼的人都會去看一下這些被注釋掉的代碼中是否有他們需要注意的信息。

這些注釋掉的代碼會堆積在一起,散發著腐爛的惡臭。

  • 需要的注釋

  • 記錄你對代碼有價值的見解

你應該在代碼中加入你對代碼這段代碼有價值的見解注釋。

如://出乎意料的是,對于這些數據用二叉樹比哈希表要快40%

//哈希運算的代價比左右比要大的多

這段注釋會告訴讀者一些重要的性能信息,防止他們做無謂的優化。

  • 為代碼中的不足寫注釋

代碼始終在演進,并且在代碼中肯定會有不足。

要把這些不足記錄下來以便后來人完善。

如當代碼需要改進時:

//TODO:嘗試優化算法

如當代碼沒有完成時:

//TODO:處理JPG以外的圖片格式

你應該隨時把代碼將來該如何改動的想法用注釋的方式記錄下來。這種注釋給讀者帶來對代碼質量和當前狀態的寶貴見解,甚至會給他們指出如何改進代碼的方向。

  • 對意料之中的疑問添加注釋

當別人讀你的代碼的時候,有些部分可能讓他們有這樣的疑問:"為什么要這樣寫?"你的工作就是要給這些部分加上注釋。

如:

// 因為Connection的創建很耗費資源和時間,而且需要多線程訪問,

// 所以使用多線程單例模式

publicstaticConnection Instance

{

get

{

if(_instance==null)

{

lock (_lock)

{

if (_instance ==null)

{

_instance =newConnection();

}

}

}

return _instance;

}

}

  • 公布可能的陷阱

當為一個函數或者類寫注釋時,可以這樣的問自己:"這段代碼有什么出人意料的地方嗎?會不會被無用?"?;旧险f就是你需要未雨綢繆,預料到別人使用你代碼時可能遇到的問題。如:

//XXX: 因為調用外部郵件服務器發送郵件,所以耗時較長,請使用異步方法調用以防止UI卡死。

publicvoid SendEmail(string to, string subject, string body)

  • 對于代碼塊總結性地注釋

對于代碼塊的總結性注釋可以使讀者在深入細節之前就能得到該代碼塊的主旨,甚至有時候都可以直接跳過該代碼塊,從而可以快速準確的把握代碼。

如讀者看到://下面代碼使用了二分查找算法來快速的根據用戶Id找到相應用戶

那么他就可以快速理解下面代碼的邏輯,否則自己看二分查找還是要用些時間的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品国产亚洲精品2020| 91日本在线观看| 欧美性xxxxhd| 亚洲自拍高清视频网站| 亚洲精品欧美一区二区三区| 国产亚洲精品久久久优势| 亚洲美女又黄又爽在线观看| www.亚洲人.com| 国产精品丝袜高跟| 亚洲网站在线看| 欧美噜噜久久久xxx| 久久久久久免费精品| 午夜精品一区二区三区在线视| 欧美成人免费大片| 17婷婷久久www| 成人高清视频观看www| 欧美肥老妇视频| 中文字幕在线观看亚洲| 国产丝袜一区二区三区| 欧美一级淫片播放口| 欧美视频一区二区三区…| 亚洲的天堂在线中文字幕| 91精品久久久久久久久久入口| 久久中文字幕一区| 国产精品美女免费| 精品露脸国产偷人在视频| 欧美制服第一页| 在线播放国产一区中文字幕剧情欧美| 91影视免费在线观看| 亚洲的天堂在线中文字幕| 久久精品国产免费观看| 久久久在线免费观看| 91精品久久久久久久久久另类| 国产精品jizz在线观看麻豆| 亚洲激情视频在线| 亚洲欧美色婷婷| 亚洲成色999久久网站| 日韩电影网在线| 精品中文字幕乱| 久久免费国产视频| 国产成人拍精品视频午夜网站| 欧美另类在线播放| 日韩精品极品毛片系列视频| 亚洲国产精品久久久久| 国产亚洲精品久久久久久| 国产va免费精品高清在线观看| 91久久久久久国产精品| 日韩免费高清在线观看| 91精品国产综合久久久久久蜜臀| 久久91亚洲人成电影网站| 国产日韩av高清| 亚洲综合在线中文字幕| 亚洲一区二区三区四区视频| 国产视频亚洲精品| 久久久精品亚洲| 日韩精品免费一线在线观看| 久久久精品视频成人| 欧美日韩午夜视频在线观看| 欧美高清一级大片| 大伊人狠狠躁夜夜躁av一区| 国产又爽又黄的激情精品视频| 最新的欧美黄色| 亚洲人成电影网| 国产精品视频yy9099| 26uuu日韩精品一区二区| 亚洲va码欧洲m码| 精品亚洲一区二区三区| 51久久精品夜色国产麻豆| 亚洲成人1234| 久久精品99久久香蕉国产色戒| 最近免费中文字幕视频2019| 欧美性生交xxxxxdddd| 热久久99这里有精品| 国产亚洲精品成人av久久ww| 成人性生交大片免费看视频直播| 欧美综合激情网| 久久久久久久久中文字幕| 欧美人在线观看| 91理论片午午论夜理片久久| 国产精品精品久久久| 狠狠躁夜夜躁人人爽超碰91| 中文在线不卡视频| 亚洲一区二区三区sesese| 亚洲国产中文字幕在线观看| 欧美日韩激情美女| 亚洲人成在线观| 欧美电影院免费观看| 在线国产精品视频| 欧美成年人视频| 欧美精品精品精品精品免费| 91高潮在线观看| 亚洲精品视频二区| 久久精品欧美视频| 精品久久久久久久久久| 中文字幕精品久久久久| 国产狼人综合免费视频| 亚洲精品永久免费| 国产精品久久久久国产a级| 成人黄色免费看| 亚洲老板91色精品久久| 亚洲一区二区三区四区在线播放| xxxxx成人.com| 国产日韩综合一区二区性色av| 欧美久久精品午夜青青大伊人| 欧美高清自拍一区| 91在线观看免费高清完整版在线观看| 国内精品久久久久久影视8| 欧美在线精品免播放器视频| 一区二区三区无码高清视频| 精品国产依人香蕉在线精品| 国产国语刺激对白av不卡| 久久久久久美女| 国产精品99免视看9| 欧美一级在线亚洲天堂| 国产性色av一区二区| 最近2019免费中文字幕视频三| 欧美激情精品在线| 欧美极品少妇xxxxx| 美日韩精品免费观看视频| 亚洲成人1234| 亚洲欧美日本伦理| 欧美性猛交99久久久久99按摩| www.日韩免费| 久久久久99精品久久久久| 一本色道久久88精品综合| 中文字幕亚洲一区在线观看| 日韩网站免费观看高清| 久久免费国产精品1| 亚洲综合第一页| 久久久久久中文字幕| 国产精品日韩在线观看| 久久天天躁狠狠躁夜夜av| 4444欧美成人kkkk| 亚洲va男人天堂| 亚洲欧美中文日韩在线v日本| 欧美wwwxxxx| 久久久久久亚洲精品中文字幕| 国产精品青青在线观看爽香蕉| 国产欧美欧洲在线观看| 欧美专区在线观看| 91亚洲精品久久久久久久久久久久| 欧美日韩中文字幕在线| 久久九九热免费视频| 8x海外华人永久免费日韩内陆视频| 亚洲香蕉成人av网站在线观看| 亚洲国产中文字幕久久网| 色av吧综合网| 亚洲国产欧美日韩精品| 亚洲欧美日韩综合| 久热精品视频在线观看| 国产精品一区二区三| 国产午夜精品麻豆| 国产极品精品在线观看| 中文字幕精品www乱入免费视频| 91高清视频免费| www.国产一区| 久久久久久久国产| 欧美激情精品在线| 久久精品国产成人精品| 亚洲综合中文字幕在线观看| 国产97在线亚洲| 亚洲第一网站免费视频| 亚洲国产成人在线播放| 国产视频自拍一区|