從VS 2005提供Code Snippets功能看程式碼複用
首先說明這裡的程式碼複用指的是狹義的原始碼的複用,而不是廣義的黑盒複用和白合複用所指的程式碼複用,所以文中所說的程式碼複用都預設都是指前者所指的原始碼的複用。
我們知道在程式設計中複用程式碼並不是一件容易的事情,其實每段程式碼的編寫,都是通過一定的思考的,當然考慮的程度與其解決的問題的難度有關。我們很忌諱在一個工程中重複使用相同的原始碼,如果出現這樣的情況很多時候就是程式結構設計本身的不合理了。可是對於一個developer或一個product
team,原始碼的邏輯(主要是執行邏輯,而不是業務邏輯)在不同專案或同一專案不同版本中很可能需要複用,而這種複用很多時候又是很難抽象成廣義的程式碼複用的。於是我們不得不ctrl+c
&
ctrl+v,這是一個好辦法,也確實能為我們節省很多的時間,可是這樣同時也會帶來很多的問題。如果被複用的程式碼是近期所寫的,我們一般對其很熟悉,ctrl+v時心理也很有底。可是對於編寫了很久的程式碼,我們在ctrl+v就不得不考慮一下程式碼是不時完全合適被複用了。更多的時候我們還需要對複用程式碼做一些小的修改,最簡單的修改莫過於把變數名改來適合當前程式碼的上下文。
如果有這樣複用過程式碼的人可能會有一種感覺,我總是不知道哪個原始碼檔案裡的程式碼snippet是我覺得解決這個邏輯最好的@_@,因為每次ctrl+v後或多或少又會把程式碼做一些小的改動,或是修補不足或是增加功能。特別是修補了不足後如果能保留下來以做再次複用就好了,可是很多時候這些越來越優秀的程式碼snippet卻仍然分佈在某個專案的某個檔案中。於是我們發現有些小工具可以用來幫助我們儲存程式碼snippet,比如前些天有人開發的類似CodeLib什麼的。
今天在用VS.NET 2005的時候,發現tools選單裡有一個Code Snippets
Manager(或者用Ctrl+k,Ctrl+b撥出)。開啟看了一下,第一感覺就是一個程式碼模版管理嘛,看看了些預置的snippet,居然都是些很簡單的類似if語句結構、for語句結構、do語句結構、while語句結構等,覺得真是沒有意思,難道微軟要我們用滑鼠來程式設計嗎?繼續往後翻,發現了幾個比較複雜的snippets,有的有一屏那麼多的程式碼。其實程式碼多少不是snippet的重要的問題了,而是這些snippet在插入IDE後,可以根據其在檔案裡的命令定義,產生如下圖所示的自動添補提示功能:
在圖中黃底黑字區域內編輯完後按Tab,其下面的虛線框裡的內容會同步的更新。這樣的功能為我們收集並複用原始碼提供了很便利的支援,這個snippet是以xml格式儲存的,只是whidbey
beta1裡面還沒沒有提供snippet檔案的視覺化編輯器,不過xml本身在VS.NET裡也不難寫。上圖示例的程式碼檔案如下:




















































































#endregion
有了這個snippet的管理支援和方便的使用方法後,基本就解決了我前面提到原始碼複用裡面版本控制和變數名修改的問題。
其實這個snippet的使用還有一個積極的意義,我們知道編寫相同的邏輯過程是枯燥的,我們都喜歡編寫新的邏輯過程,即使新的邏輯更難更復雜,反而更有挑戰。但是我們又不能避開很多程式邏輯的複用,在我們以一種類似"厭惡"的情緒重複著那些程式邏輯時,保證程式碼的正確性真是一場噩夢。
本文轉自部落格園鳥食軒的部落格,原文連結:http://www.cnblogs.com/birdshome/,如需轉載請自行聯絡原博主。
相關文章
- snippets for c code
- VS Code除錯C程式碼除錯C程式
- VS Code 程式碼片段指南: 從基礎到高階技巧
- vs code 新建程式碼片段 路由基礎程式碼路由
- vs code 新建程式碼片段 vue 基礎程式碼Vue
- vs code 自動調整程式碼格式
- VS Code 對 Lua 程式碼格式化
- 如何在 VS Code 中除錯 LeetCode 程式碼?除錯LeetCode
- 重複程式碼的剋星,高效工具 VSCode snippets 的使用指南VSCode
- VS2005中檢測和更正 C/C++ 程式碼缺陷C++
- 我將從VS Code切換到VS Codium
- 如何使用 VS Code 開發.NET Core應用程式
- 用VS Code開發Vue應用Vue
- vs 2017 vs code
- VS Code 正則匹配(冗餘程式碼批量清理方法)
- 超實用VS Code快捷鍵
- VS CODE下編譯ROS程式編譯ROS
- VS2005(vs2008,vs2010)使用map檔案查詢程式崩潰原因
- Color Code Copy for mac(顏色程式碼複製工具) v1.3.2啟用版Mac
- Code rant: 從硬編碼到可配置、規則引擎、低程式碼DSL的複雜性時鐘
- 關於程式碼複用
- 使用 VS Code 進行 Python 程式設計Python程式設計
- vs code 碼雲 寶塔webhook 自動化部署程式碼到伺服器WebHook伺服器
- VS error LNK2005:**already defined in **.objErrorOBJ
- vs2005無法附加到程式 系統找不到檔案
- 我的VS CODE
- Debugging Ruby in VS Code
- vs code 外掛
- VS code on ubuntu 18.04Ubuntu
- python物件導向入門(1):從程式碼複用開始Python物件
- 人員定位系統原始碼,idea VS Code原始碼Idea
- VS Code 中的增強 code CLI
- github1s: 1秒極速用 VS Code 閱讀 GitHub 原始碼Github原始碼
- Visual Studio 2005 如何建立“Web 應用程式”Web
- 透過 VS Code 優雅地編輯 Pod 內的程式碼(非 NodePort)
- 一文打盡埠複用 VS Haproxy埠複用
- 低程式碼VS無程式碼
- VS code 簡單配置
- 強大的 VS Code