使用GhostDoc為程式碼生成註釋文件
介紹:
GhostDoc是Visual Studio的一個免費外掛,可以幫助開發人員編寫XML格式的註釋文件。
C#中XML格式的文件註釋好處多多:Visual Studio會在很多地方顯示這些註釋內容(例如,編輯器的工具提示或物件瀏覽器),還有一些工具(比如NDoc或微軟的文件工具Sandcastle)也可以利用這些註釋生成具有良好外觀的幫助檔案。這些都讓XML格式的註釋看上去很美——但很不幸,你首先得編寫大量簡單、乏味的註釋。
GhostDoc可以做什麼?
GhostDoc為Visual Studio中的C#程式碼編輯器安裝了一個新的命令。在編輯原始檔時,只需將游標置於要新增文件的方法或屬性內部,然後通過熱鍵(預設為Ctrl+Shift+D)或右鍵選單中的Document this選單項呼叫命令,GhostDoc就會插入一段XML格式的註釋。你也許會想到在方法或屬性前面鍵入"///"時的類似效果,但是後者只能建立一段空的註釋構造,而GhostDoc則能夠生成大部分實用的註釋。
如果你的類成員是用於實現介面或重寫基類的成員,GhostDoc會使用既存的文件,不論這些介面或基類來自何處。這樣你就可以重用大量的微軟編寫的文件——是否想起了在實現IEumerable介面時,需要考慮如何為GetEnumerator()方法新增註釋。
如果沒有既存的文件可用,GhostDoc會試著”猜測”如何為你生成註釋。這主意初看起來也許有點奇怪,不過在特定條件下(後面會提到)GhostDoc做的很不錯。有時候它”猜測”的結果會不太準確,甚至有些搞笑,但平均下來,修改這些生成的文件還是要比完全手工去寫省了不少時間。
GhostDoc事實上並”不懂”英語,那為何它生成的文件卻常常令人相當滿意?其中的基本原理頗為簡單,GhostDoc假定你的程式碼遵從微軟類庫開發人員設計規範:
<!--[if !supportLists]--><!--[endif]-->
GhostDoc生成註釋的質量很大程度上取決於識別符號命名的質量,所以長期使用GhostDoc,也會讓你學會編寫一致的和自解釋的識別符號,不亦樂乎?
GhostDoc不能做什麼?
GhostDoc很強大,但也不能對它有太高的期望。它生成註釋的方式也許不能很好地符合你個人的註釋風格。GhostDoc也不能一次性為整個程式碼檔案生成註釋,只能每次為一個成員生成註釋——GhostDoc如此設計,是因為不管怎樣總需要你去檢查它生成的每段註釋。
GhostDoc的配置:
在Visual Studio選單欄中選擇Tools->GhostDoc->Configure GhostDoc。
GhostDoc是Visual Studio的一個免費外掛,可以幫助開發人員編寫XML格式的註釋文件。
C#中XML格式的文件註釋好處多多:Visual Studio會在很多地方顯示這些註釋內容(例如,編輯器的工具提示或物件瀏覽器),還有一些工具(比如NDoc或微軟的文件工具Sandcastle)也可以利用這些註釋生成具有良好外觀的幫助檔案。這些都讓XML格式的註釋看上去很美——但很不幸,你首先得編寫大量簡單、乏味的註釋。
GhostDoc可以做什麼?
GhostDoc為Visual Studio中的C#程式碼編輯器安裝了一個新的命令。在編輯原始檔時,只需將游標置於要新增文件的方法或屬性內部,然後通過熱鍵(預設為Ctrl+Shift+D)或右鍵選單中的Document this選單項呼叫命令,GhostDoc就會插入一段XML格式的註釋。你也許會想到在方法或屬性前面鍵入"///"時的類似效果,但是後者只能建立一段空的註釋構造,而GhostDoc則能夠生成大部分實用的註釋。
如果你的類成員是用於實現介面或重寫基類的成員,GhostDoc會使用既存的文件,不論這些介面或基類來自何處。這樣你就可以重用大量的微軟編寫的文件——是否想起了在實現IEumerable介面時,需要考慮如何為GetEnumerator()方法新增註釋。
如果沒有既存的文件可用,GhostDoc會試著”猜測”如何為你生成註釋。這主意初看起來也許有點奇怪,不過在特定條件下(後面會提到)GhostDoc做的很不錯。有時候它”猜測”的結果會不太準確,甚至有些搞笑,但平均下來,修改這些生成的文件還是要比完全手工去寫省了不少時間。
GhostDoc事實上並”不懂”英語,那為何它生成的文件卻常常令人相當滿意?其中的基本原理頗為簡單,GhostDoc假定你的程式碼遵從微軟類庫開發人員設計規範:
<!--[if !supportLists]--><!--[endif]-->
- 你的程式碼使用Pascal或Camel命名法為由多個單片語成的識別符號命名
- 你的方法名通常以動詞開頭
- 你在識別符號中不使用縮寫
如果你能夠遵從這些規則(比如,使用ClearCache()而不是Clrcch()),同時使用一些自解釋的識別符號名稱,那麼GhostDoc就能派上用場了,它把識別符號分割為幾個單詞,將它們組合來生成註釋,也許並不完美,卻給你一個良好文件的開始。
文字的生成使用可定製的規則和模板,除了內建的規則,還可以定義新的自定義規則來擴充套件或替換既有的規則(為你的自定義規則提供更高的優先順序或禁用內建規則)。
上面提到過,GhostDoc並”不懂”英語,但它會嘗試使用某種機制來提高生成註釋的質量:
- 動詞的處理機制(GhostDoc假定方法名的首個單詞為動詞):Add->Adds,Do->Does,Specify->Specifies;
- "Of the"排序組織機制:ColumnWidth -> Width of the column.
- 一些特殊形容詞的特殊合併機制:例如,MaximumColumnWidth->”Maximum width of the column”而不是”Width of the maximum column”
- 對首字母縮寫組成的常量的自動檢測,並通過一個列表來處理其它的一些首字母縮寫術語
- 使用一個單詞列表,以決定何時不使用”the”:AddItem -> Adds the item, BuildFromScratch -> Builds from scratch
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--> ///
/// Determines the size of the page buffer.
///
/// Initial size of the page buffer.
///
public int DeterminePageBufferSize(int initialPageBufferSize)
{
return 0;
}
///
/// Adds the specified item.
///
/// The item.
public void Add(string item)
{
//does something
}
///
/// Appends the HTML text.
///
/// The HTML provider.
public void AppendHtmlText(IHtmlProvider htmlProvider)
{
}
是不是驚人的準確?Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--> ///
/// Determines the size of the page buffer.
///
/// Initial size of the page buffer.
///
public int DeterminePageBufferSize(int initialPageBufferSize)
{
return 0;
}
///
/// Adds the specified item.
///
/// The item.
public void Add(string item)
{
//does something
}
///
/// Appends the HTML text.
///
/// The HTML provider.
public void AppendHtmlText(IHtmlProvider htmlProvider)
{
}
GhostDoc生成註釋的質量很大程度上取決於識別符號命名的質量,所以長期使用GhostDoc,也會讓你學會編寫一致的和自解釋的識別符號,不亦樂乎?
GhostDoc不能做什麼?
GhostDoc很強大,但也不能對它有太高的期望。它生成註釋的方式也許不能很好地符合你個人的註釋風格。GhostDoc也不能一次性為整個程式碼檔案生成註釋,只能每次為一個成員生成註釋——GhostDoc如此設計,是因為不管怎樣總需要你去檢查它生成的每段註釋。
GhostDoc的配置:
在Visual Studio選單欄中選擇Tools->GhostDoc->Configure GhostDoc。
其中包含如下幾個屬性頁:
<!--[if !supportLists]--> <!--[endif]--><!--[if !supportLists]-->
- Rules : 修改,刪除,新增文字生成規則
- Acronyms : 指定將哪些單詞視為首字母縮寫詞
- "Of the" Reordering : 指定觸發重新排序行為的單詞
- "No the" Words : 指定哪些詞前不使用”the”
- Options : 配置GhostDoc的其它選項
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-364703/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Rust 註釋生成文件Rust
- 從Python原始碼註釋,自動生成API文件Python原始碼API
- php註釋生成介面文件 apidoc 安裝以及使用PHPAPI
- apidoc利用程式碼註釋書寫文件API
- eoLinker 新功能釋出,增加了識別程式碼註釋自動生成文件功能
- 把Mybatis Generator生成的程式碼加上想要的註釋MyBatis
- CSS程式碼註釋CSS
- php程式碼註釋PHP
- IDEA 利用groovy指令碼生成註釋Idea指令碼
- 支援 Laravel/Lumen 下控制器註釋生成 API 文件,生成資料庫字典, 註冊路由呈現LaravelAPI資料庫路由
- 有趣的程式碼註釋
- 請停止程式碼註釋
- javascript如何註釋程式碼JavaScript
- 批量生成註釋命令
- #翻譯#使用註解處理器生成程式碼-1 註解型別型別
- 僅掃描gitlab上程式碼註釋自動生成API文件的工具?推薦試試eolinker吧GitlabAPI
- java快速實現匯出生成csv檔案(含註釋程式碼)Java
- 程式設計師幸福感拉滿:一鍵為程式碼自動生成註釋的工具,拿走不謝!程式設計師
- 程式碼才是最好的註釋
- HTML 程式碼註釋規範HTML
- 註釋程式碼的13技巧
- Java程式碼註釋規範Java
- 怕寫文件?AI自動生成程式碼文件的外掛AI
- Flutter 註解處理及程式碼生成Flutter
- SpringBoot介面 - 如何生成介面文件之非侵入方式(通過註釋生成)Smart-Doc?Spring Boot
- Java文件註釋全攻略Java
- ecilipse Javadoc文件註釋Java
- iOS 註釋方法大全 程式碼塊加快捷鍵註釋iOS
- 將 Visual Studio .net 程式碼註釋 英文轉為中文
- 程式設計師是否有義務做好程式碼的註釋?你做好程式碼註釋了嗎?程式設計師
- 使用Spring的註釋和反射讓程式碼更精簡Spring反射
- Pycharm 程式碼註釋風格模板PyCharm
- jvm執行程式碼註釋部分JVM行程
- 為什麼說程式碼註釋是程式設計師必備的技能?程式設計師
- Eclipse 的快捷鍵以及文件註釋、多行註釋的快捷鍵Eclipse
- Android註解使用之通過annotationProcessor註解生成程式碼實現自己的ButterKnife框架Android框架
- iOS 註釋方法大全 程式碼塊加快捷鍵自定義註釋iOS
- 註釋 · 佛祖保佑程式碼永無BUG