首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

介紹 VC 輔助開發工具 VcExtend

     編輯:關於VC++

VcExtend 擴充 VC 6.0 功能,包含函式主體批次產生、資料介面自動產生、註解可隱可現、註解自動產生文件等功能,能大幅提升 VC 工作效率。

VcExtend 使用 VC 6.0 擴充巨集介面,採 VBScript 撰寫,使用起來幾乎與 VC 本身指令無異。完全公開原始碼,可免費使用與修改。

主要指令介紹

  • 建立新類別:產生乾淨清爽的類別框架,程式碼模板可自由修改
  • 程式碼整理:為函式宣告產生函式主體、為成員變數產生讀寫介面(含宣告與實作)、將函式主體依宣告順序重新排序。一次性完成,無論新設計或修改類別都能良好運作
  • 註解:產生註解模板、註解可隱藏、函式主體可調出標頭檔寫的函式註解閱讀修改。註解自動產生類似 MSDN 的文件,資料採 XML 儲存,可自訂顯示格式
  • 註解批次處理:顯示/隱藏所有詳細註解、顯示/隱藏註解摘要、自動為資料介面函式產生註解、文件整理

一、準備工作——開始!

先下載 VcExtend.rar,需安裝 Microsoft XML 外掛。解壓縮後可見 Txt 和 Doc 資料夾:Txt 為建立新類別時使用的程式碼模板,Doc 存放由註解產生的文件與顯示工具。在專案中使用 VcExtend 要將這兩個目錄複製到專案根目錄下。

VcExtend.dsm 為原始碼,複製到 C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Macros 目錄,將裡面提供的指令掛接到工具列即可使用。

若從未用過 VC 6.0 擴充巨集,可依說明操作:啟動 VC 6.0 不開啟專案 → Tools 選單選 Macro → Options → Load Files → 勾選 VcExtend 取消其他 → Toolbars 標籤新增工具列命名 VcExtend → Commands 標籤 Category 選 Macros → 將指令拖到工具列並選 Text Only → Show Menus For 選 All Editors → Close → 重新啟動 VC 6.0 即可使用。

二、試用體驗

啟動 VC 6.0 開啟 Example\Demo 專案(AppWizard 產生的 SDI 專案,加了兩個類別)。開啟 CShow 類別標頭檔,程式碼特別清爽。用瀏覽器開啟 Doc\Doc.htm,可見 CShow 文件(由註解自動產生)。CTaste 類別文件尚空,待完成。

開啟 CTaste 標頭檔(無功能類別),測試 CodeCleanUp 功能:直接在標頭檔寫函式宣告與成員變數(變數獨佔一行,需讀寫介面者在註解最前加 //R、//W、//RW),點擊 CodeCleanUp,函式主體與介面自動產生。CodeJump 在宣告與實作間跳轉。再試 Comment 功能:游標在函式宣告上點擊產生註解模板,填寫內容後再點一下隱藏/儲存。游標在實作檔點擊 Comment 可調出標頭檔註解閱讀修改。類別註解同理操作。

完成後用瀏覽器開啟 Doc\doc.htm 查看文件,格式類似 MSDN,非常熟悉。

三、缺點先說清楚

  • 使用 VC 巨集功能與元件,VBScript 功能有限,作者對 VBScript 不熟,部分程式碼可能較爛
  • 錯誤處理最糟:如 Documents.Open 無回傳值,檔案不存在會造成嚴重記憶體錯誤導致 VC 整個退出
  • 新專案使用 VcExtend 務必 將 Doc 和 Txt 資料夾複製到專案目錄下(與 Debug、res 並列),否則一定出問題
  • 修改 VcExtend 原始碼後最好重啟 VC,否則可能產生記憶體錯誤
  • 程式碼需規範:每個類別一定要有建構函式並放最上面;每個成員變數宣告獨佔一行;額外註解用 // 不用 /**/
  • Inline 函式實作放在 .inl 檔,一個類別三個檔案,CodeJump 讓你感覺不到多檔案

四、類別框架產生——與清爽程式碼為伴

喜歡清爽程式碼者,用 ClassNew 產生新類別是不錯選擇,尤其 CObject 子類別。點擊 ClassNew 輸入類別名稱(如 CMyClass),可選項:繼承類別用 :BaseName、指定檔名用 #FileName、目錄名用 @DirName、巨集選項 /S(可序列化)、/M(訊息類別)。修改 Txt 目錄下 cpp.txt、hpp.txt、inl.txt 可自訂模板。

ClassNew 缺陷:產生類別不自動加入專案與 ClassWizard,需手動加入或先用 VC New Class 產生再用 ClassNew 重新產生。非 ClassNew 產生的類別也可用 VcExtend 功能,首次使用需輸入類別名與基類別名。

五、函式主體與資料介面產生——好用的程式碼完成功能

CodeCleanUp 三大功能:函式主體產生、資料介面函式產生、函式主體依宣告順序重排序。先寫標頭檔所有函式宣告與成員變數,一下子產生函式主體與介面。

成員變數提供公用介面只需在註解加讀寫標記(//R、//W、//RW),CodeCleanUp 依標記產生介面。隨時修改標記再執行 CodeCleanUp 會自動產生或刪除介面函式。介面函式預設命名規則 Get/Set + 去前綴變數名,可修改。實作程式碼自動產生,通常可直接使用。介面函式皆為內聯,實作在 .inl 檔,CodeJump 方便跳轉。

其他函式宣告最前加 inline 可生成到 .inl。刪除函式:刪除宣告執行 CodeCleanUp,介面函式修改讀寫標記。普通函式不刪除主體(可能還要用),只移到最上方手動刪除。介面函式宣告放標頭檔最下方,關注核心程式碼更容易。

六、讓你愛上寫註解——註解可隱可現,文件自動產生

Comment 為開關式多功能指令:無註解時產生模板、有註解時儲存隱藏、隱藏時調出閱讀修改、在 cpp/inl 檔也可調出註解、游標在類別宣告或上方操作類別註解。

註解項三部分:全自動處理(類別名、基類別名、檔名、函式名、原型)、必選項(類別/函式簡述、函式回傳值與參數)、可選項(如說明)。可選項增刪見後續章節。

產生模板時會分析:多載函式視為一個函式收集所有參數。類別模板中 [] 內的回傳型別或參數勿刪,註解加在後面。修改函式(加參數、加多載)可儲存後重新調出更新模板。

註解隱藏時實際儲存至 Doc\Doc.xml。修改後最好隱藏一次(儲存同步進行)。註解項以 ///$標籤名 開頭,換行第二行起用 ///,勿用 ///$ 或 //。長註解分多行寫,用 MultiLineComment 指令處理。文件顯示環境不同,原始碼分行文件會忽略。文件強制換行加 \r,換行並空一行加 \rr。

註解與函式宣告間不可有空行。儲存為 XML,內容與顯示分離。可自訂 XSL 顯示格式,作者提供工具採 MSDN 風格。文件顯示僅用 Doc.htm,腳本與 XSL 模板實現,IE 前進後退重整無法使用。

函式分類功能:同類函式宣告放在一起,第一個函式註解加 ///$分類:類名(中文分號),後續函式歸為此類直到定義新分類。參考 CShow 標頭檔與文件。

七、註解批次處理魔法——省時高效、隨心所欲

  • CommentDetail:顯示/隱藏所有註解
  • CommentDesc:顯示/隱藏註解摘要(將所有函式註解簡述作為普通註解加在宣告後)。幫助快速理解類別功能,避免註解隱藏後完全無註解,也不會大量註解掩蓋有效程式碼。也是供 VC 呼叫的(物件成員列表彈出函式註解)。建議類別完成後調用 CommentDesc 作為最終程式碼
  • AttributeComment:為成員變數讀寫介面產生註解。若成員變數有註解(如 CString m_strName; //RW 主角名字),調用後 GetName/SetName 自動產生註解(含簡述、回傳值、參數)。已修改儲存的註解不重新產生
  • DocCleanUp:文件整理。刪除多餘文件(如函式已刪除),依函式宣告順序重排序文件

CommentDetail 和 CommentDesc「不相容」,互相隱藏對方顯示的註解。兩者皆為開關式,可讓原始檔完全無註解、顯示所有註解、或僅顯示摘要。

八、其他小工具

  • CodeJump:程式碼跳轉。VC 6.0 跳轉常找不到,無方便標頭檔/實作檔跳轉指令,加 .inl 更不方便。CodeJump 一般不會找不到,依函式是否內聯自動跳 .cpp 或 .inl,.inl 到 .h 也良好。找不到時彈出視窗詢問是否跳轉
  • VirtualFunction:為 CObject 子類別覆寫基類別虛擬函式。介面需填序號選函式,僅顯示函式名
  • ThisList:顯示 this 指標成員列表。VC 6.0 ListMembers 預設顯示全域成員,作者覺得預設顯示 this 成員較好。ThisList 刪除上一個 this-> 再插入新 this->,快捷鍵設為 Shift+Left Arrow,ListMembers 設 Shift+Right Arrow

九、可選項——客製化你的 VcExtend

透過修改原始碼全域常數客製化。主要選項:

  • HppDir、CppDir、InlDir:檔案儲存目錄,可實現分目錄儲存。定義目錄務必在專案目錄下建立對應資料夾
  • 註解標籤:Mark_Desc(簡述)、Mark_Return(回傳)、Mark_Param(參數)、Mark_Cort(分類),可改英文
  • 可選項:Marks_Class、Marks_Function,可增刪改序
  • NameLen、NameLang:標籤最長長度與語言(英文=1、中文=2)
  • AssertGet、AssertSet、GetSetAll、AssertSentence:斷言與全介面產生選項(目前不建議改動)

作者嘗試一種 C++ 程式設計觀念:類別封裝進一步擴大,將類別設計與實作完全分離。函式宣告、成員變數、建構/解構、有效性檢查、資料介面屬類別設計;其他功能函式實作屬類別實現,完全不接觸成員變數,透過 Get/Set 操作資料。設 AssertGet、AssertSet、GetSetAll 全為 True,類別實現全透過 Get/Set 讀寫,自動形成嚴密斷言網路,攔截難尋錯誤(「密集陣火炮攔截巡弋飛彈」)。有缺點,正在嘗試,不建議使用。

十、若 VcExtend 對你有用,請一起完善它

開發工具好不好用靠實際應用檢驗。發現問題或修改缺陷請在論壇發表,有建議別藏私。作者專門設小論壇收集問題建議,定期推出修正版。還有功能醞釀中(如團隊多人開發如何合併文件),有相關需求請提建議。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved