【高效程序員系列】2、別做機(jī)器人——讓工作自動化
每天打開電腦,首先要做的是打開最常用的軟件:要和朋友聯(lián)系,你打開了QQ;要收郵件,你打開了Outlook;要聽音樂,你打開了酷狗……但是你不想做機(jī)器人,每天重復(fù)的打開這些軟件,于是你讓它們開機(jī)啟動。恭喜,你有不做機(jī)器人的基本思想。這些簡單重復(fù)的操作扔給電腦吧,你需要把寶貴的精力用來做其他更有價值的事。但是聰明的你有沒有想過,日常工作中有沒有其他事也可以丟給電腦,讓你擺脫機(jī)械的操作?下面分享一下我的經(jīng)驗(yàn),如果你也有相關(guān)的經(jīng)驗(yàn),希望也拿出來和大家一起分享!
1、VS代碼段的使用和定義
在使用Visual Studio編程的時候,你肯定會喜歡智能提示,還有代碼段的功能。比如輸入foreach:
按下Tab,就出來了一個固定格式的代碼段:
在編輯器中按下Ctrl+K,Ctrl+X,就可以查看代碼段定義了,如下圖:
如果你正在使用VS2008,可以在菜單中找到代碼段管理器:
其中列出了系統(tǒng)自帶的代碼段(不明白為什么VB的那么多,C#的那么少。其實(shí)現(xiàn)在VB和C#沒多大區(qū)別,代碼段上也應(yīng)該做到平等。):
相信你應(yīng)該對一些常用的代碼段應(yīng)用非常熟練了,比如prop,for,if,try。其實(shí)代碼段也是可以自己定義的,廢話少說,下面就介紹一下代碼段的定義。
這里介紹三個工具(都是免費(fèi)的):
(1)Snippet Editor(下載地址)
這是一個獨(dú)立的軟件,而且是綠色版的。解壓之后運(yùn)行SnippetEditor.exe即可。來看一下它的界面:
它會自動識別當(dāng)前機(jī)器上安裝的VS版本,然后在左上角列出來。選擇不同的版本,左邊的樹控件會列出該版本的代碼段定義。雙擊代碼段文件,左邊的編輯區(qū)列出編輯的信息。而在狀態(tài)欄會顯示出當(dāng)前編輯文件的路徑。要創(chuàng)建代碼段,單擊工具欄上的“New”按鈕即可。下面針對編輯區(qū)的操作進(jìn)行講解:
【Properties】
| Title | 標(biāo)題,必須輸入,就是顯示在樹控件中的節(jié)點(diǎn)名稱 |
| Description | 描述,對代碼段的詳細(xì)解釋,在VS中輸入代碼段時會提示 |
| Author | 作者,寫上自己的大名吧 |
| Shortcut | 縮寫,在編輯器中輸入定義的Shortcut,按下Tab鍵,即可輸入代碼段 |
| Language | 編程語言,可選HTML、JScript、Visual Basic、Visual C#、Visual J#、XML |
| Kind | 代碼段類型,可選Class declaration、Member declaration、Member body、Unspecified,一般選擇默認(rèn)Unspecified即可 |
| Help Url | 幫助URL,如果有就輸入 |
【Code】
該區(qū)域包含兩部分,上面是文本編輯框,下面是參數(shù)編輯框。現(xiàn)在文本編輯框中輸入代碼模板,然后將光標(biāo)定位在需要變動的地方,點(diǎn)擊下方工具欄上面的“新增”按鈕,軟件會在文本編輯框中插入一段格式為“$NewLiteral$”的文本,其中NewLiteral即模板參數(shù)的名稱,根據(jù)自己的需要修改即可。下面列出模板參數(shù)的屬性解釋:
| ID | 模板參數(shù)的名稱,在一個模板里不重復(fù)即可 |
| Defaults to | 該參數(shù)的默認(rèn)值,定義為最常用的默認(rèn)值,在輸入的時候就可以不用再輸入了,比如字符串就定義為"",數(shù)字就定義為0 |
| Kind | 參數(shù)類型,可選Literal、Object,一般選擇默認(rèn)的Literal即可 |
| Type | 參數(shù)的數(shù)據(jù)類型,一般不需要輸入。如果Kind選擇為Object,則最好輸入?yún)?shù)的數(shù)據(jù)類型。 |
| Tooltip | 提示信息 |
| Function | 生成代碼的方法,一般不需要輸入。在一些特殊場合需要,比如switch代碼段中,它會自動列出枚舉的值。 |
| Editable | 是否可以編輯 |
定義代碼段沒什么難度,參考系統(tǒng)中默認(rèn)的代碼段就可以寫出自己代碼段,可以大大提高輸入代碼的速度。這里有兩個特殊的模板常量,$end$和$selected$。“$end$”是用來定義在VS中輸入完代碼段之后,光標(biāo)定位在什么地方。“$selected$”一般用于多行代碼,我分析了一下系統(tǒng)代碼段,感覺沒什么實(shí)際用途。
【References】
該區(qū)域是用來記錄要添加哪些dll引用,但是它并不會真的自動去引用,這里只是記錄。
【Imports】
該區(qū)域是用來記錄要在代碼中添加哪些命名空間,它也不會真正去添加命名空間。
編輯完成之后點(diǎn)擊“Save”按鈕保存,然后把該文件放到自定義代碼段文件夾中。該文件夾位于“%我的文檔%\Visual Studio 2010\Code Snippets\Visual C#\My Code Snippets”或者“D:\Program Files\Microsoft Visual Studio 10.0\VC#\Snippets\2052\My Snippets”,根據(jù)自己安裝的路徑和編程語言查找。將定義的代碼段文件放到該文件夾中,再打開VS,輸入快捷鍵然后按下Tab,你定義的代碼段就可以被輸入了。
(2)SnippetDesignerSetup-For VS2008.msi(下載地址)
這個是給VS2008使用的插件,解壓之后安裝即可。然后新建一個后綴名的.snippet的文件,用VS2008打開,則會調(diào)用安裝的插件來編輯代碼段。
個人更喜歡第一種方法,所以在此對插件方法不做詳細(xì)介紹,如果需要了解詳細(xì)操作步驟可以參考http://snippetdesigner.codeplex.com/wikipage?title=createFromScratch&referringTitle=Documentation,英文的。
(3)SnippetDesigner-For VS2010.vsix(下載地址)
這是針對VS2010的擴(kuò)展,和VS2008不一樣,不在需要安裝到系統(tǒng)中,雙擊后會添加到VS2010的擴(kuò)展中。裝好裝好會在VS2010中會添加一個文件模板,可以直接在VS2010中新建一個snippet文件:
順便提一句,VS2010有很多擴(kuò)展,可以聯(lián)網(wǎng)下載,打開擴(kuò)展管理器即可:
2、代碼段編譯Snippet Compiler
Snippet Compiler(下載地址)是一個基于 Windows 的小型應(yīng)用程序,你可以通過它來編寫、編譯和運(yùn)行代碼。如果你具有較小的代碼段,并且你不想創(chuàng)建完整的 Visual Studio .NET 項(xiàng)目(以及該項(xiàng)目附帶的所有文件),則該工具會很有用。用一句話概括它的功能:它是一個支持多種編程語言、多個版本的.NET框架、多個代碼文件、帶智能提示的編輯和編譯軟件。下面是它的界面,如果需要詳細(xì)了解,可以參考:http://www.rzrgm.cn/conexpress/archive/2011/07/24/2115308.html
3、SQL智能提示和代碼段
上面提到了在VS中可以使用智能提示和代碼段輸入功能,另一個最常用的軟件就是SQL Server。但是這么多年了,SQL Server一直沒有智能提示功能,直到SQL Server 2008才加入了字段提示功能,但是和VS的智能提示相比,相差十萬八千里。如果你還在吭哧吭哧一個一個字段敲SQL代碼的話,這里強(qiáng)烈推薦你使用SQL Prompt。它不僅可以提示字段,還能插入代碼段,而且代碼段還能自己定義……關(guān)于它的種種好處這里就不詳述了,當(dāng)你掌握它之后,效率提高不止一兩倍。具體的用法可以參考http://www.rzrgm.cn/conexpress/archive/2011/07/28/2120432.html#
4、代碼自動生成
作為.NET開發(fā)人員,手邊有一款代碼生成工具必不可少。最出名的代碼生成工具就要算是CodeSmith了,它功能強(qiáng)大,簡單易懂,很容易上手。如果你還不會用CodeSmith,那就趕緊去學(xué)習(xí)吧。可以參考TerryLee的系列文章:http://terrylee.cnblogs.com/archive/2005/12/28/306254.aspx
CodeSmith是一款商業(yè)軟件,需要花錢購買的。如果你很尊重版權(quán),又不想花錢購買,推薦你另一款同樣強(qiáng)大的免費(fèi)工具:MyGeneration,也是完全基于模板引擎進(jìn)行代碼生成的,功能上并不比CodeSmith差。可以到http://sourceforge.net/projects/mygeneration/ 下載,也可以參考http://www.docin.com/p-83919214.html 學(xué)習(xí)如何使用。
5、腳本工具
腳本工具Au3、AHK、Python、Ruby、Windows Power Shell等
雖然現(xiàn)在的工具都有很好的IDE界面,但是有時候腳本工具卻能帶來更高的效率。而且有些功能用腳本語言很容易實(shí)現(xiàn),但是換成其他語言就比較麻煩了。
(1)Au3
Au3的全名是AutoIt3,它是一種類似于VB的腳本語言,設(shè)計(jì)的初衷就是為了讓工作自動化。下面列舉一下它的特點(diǎn):
語法類似VB,很容易理解。
編輯器帶智能提示,感覺這一點(diǎn)比VB6強(qiáng)大,有點(diǎn)像VS2005之后的代碼編輯器。
可以很方便的操作鼠標(biāo)和鍵盤,也可以錄制操作過程,類似于宏。
可以設(shè)置快捷鍵,組合Ctrl、Alt、Shift、Win和其他鍵,按下快捷鍵即可執(zhí)行對應(yīng)的操作。
可以編譯成exe文件獨(dú)立運(yùn)行,而且支持Win7。
有類似于VB的界面設(shè)計(jì)器,可以設(shè)計(jì)具有Windows界面的應(yīng)用程序。
具有強(qiáng)大的擴(kuò)展庫,很容易的操作系統(tǒng)、Win32API、網(wǎng)絡(luò)、文件、數(shù)據(jù)庫、注冊表、ini文件……
如下圖,可以用類似C語言的#include引入擴(kuò)展文件,代碼可以折疊,甚至有類似于C#的#Region折疊。
界面設(shè)計(jì)器,感覺和VB6的設(shè)計(jì)器差不多,還能插入Win32控件。
它包含強(qiáng)大的擴(kuò)展庫,涉及到文件、GDI+、界面、網(wǎng)絡(luò)、數(shù)學(xué)、進(jìn)程、內(nèi)存、數(shù)據(jù)庫、Office、音頻、視頻……如下圖:
至于它的應(yīng)用場景就很廣泛了,最常用的就是執(zhí)行大量重復(fù)的操作,用Au3記錄下這些操作之后,就可以代替人工執(zhí)行了,比如批量安裝軟件、實(shí)現(xiàn)游戲外掛、熱鍵功能等等。你甚至可以把它看成是一種比VB6更強(qiáng)大的語言,因?yàn)樗梢跃幾g成exe文件,可以設(shè)計(jì)具有Windows界面的程序,不需要運(yùn)行時支持,copy到別的機(jī)器就可以運(yùn)行,還支持Win7。而且它的很多操作都只需要一個方法即可實(shí)現(xiàn),比如從網(wǎng)絡(luò)下載文件用InetGet(url,filePath),打開文件或執(zhí)行程序Run(filePath),點(diǎn)擊鼠標(biāo)MouseClick(key,x,y),移動鼠標(biāo)MouseMove(x,y),發(fā)送擊鍵Send(key),關(guān)閉窗體WinClose(title)……其中最常用的一個方法就是HotKeySet(hotkey,method),就是注冊熱鍵。比如HotKeySet("#q","MyMethod")的意思是注冊Win+Q鍵運(yùn)行MyMethod方法,當(dāng)按下Windows鍵和Q鍵時,就會調(diào)用MyMethod方法。
詳細(xì)的用法這里就不介紹了,有需要的可以通過如下網(wǎng)址了解:
華軍軟件園-Au3漢化版(推薦使用,內(nèi)含中文幫助文檔):http://www.onlinedown.net/soft/54314.htm#down
AutoIt中文論壇:http://www.autoit.net.cn/
AutoIt官方網(wǎng)站:http://www.autoitscript.com/site/autoit/
新版Au3教程:http://wenku.baidu.com/view/b0915d1fb7360b4c2e3f6460.html
Let's AutoIt電子書:http://wenku.baidu.com/view/3418a0cfa1c7aa00b52acb6d.html
另外一個和Au3類似的腳本語言叫AHK,全稱是AutoHotKey,據(jù)說是從Au3開發(fā)組分離出去的一部分人開發(fā)的,功能和Au3類似,但是語法有點(diǎn)類似C。有需要的也可以到如下網(wǎng)址了解:
AHK下載:http://www.onlinedown.net/soft/39219.htm
小眾軟件AHK分類:http://www.appinn.com/category/autohotkey
AHK中文論壇:http://ahk.5d6d.com/
煎蛋-AHK快餐店(適合入門):http://jandan.net/2007/10/21/ahk-fast-food-restaurant-advance-notice.html
(2)Windows PowerShell
這個是微軟的腳本語言。之前微軟只注重界面,命令行方面非常欠缺。特別是對于系統(tǒng)管理人員,有些操作用命令行比界面更快捷。Unix和Linux中的Shell命令非常強(qiáng)大,微軟決定在自己的Windows系統(tǒng)上也開發(fā)一種強(qiáng)大的Shell命令。下面是PowerShell的介紹:
PowerShell是一款基于對象的shell, 建立在.Net框架之上, 目前支持.Net Framework 2.0. 能夠運(yùn)行在Windows XP SP2, Windows Vista, Windows 7,Windows 2003操作系統(tǒng)上. 能夠同時支持WMI, COM, ADO, ADSI等已有的Windows管理模型.
在SQL Server2008中也添加了對PowerShell的支持,如下圖:
使用PowerShell也很簡單,和cmd用法一樣,在運(yùn)行中輸入powershell即可,如下圖,在其中也可以輸入cmd命令。
如果對PowerShell命令不熟悉,可以考慮使用PowerShellAnalyzer,它也具有智能提示功能。官方網(wǎng)站:http://www.powershellanalyzer.com/
下面舉個例子來展示PowerShell的便利。比如新招聘一批員工,需要在服務(wù)器上給他們每個人創(chuàng)建一個文件夾。一般人都會想到的是:新建文件夾,重命名,接著再新建重命名。幾個人還可以接受,但是如果好幾十個人,估計(jì)誰都會有點(diǎn)煩。如果用PowerShell則可以很容易解決問題。首先在一個文本文件中輸入每個人的名字,每個名字占一行。然后打開PowerShell輸入如下命令即可,是不是覺得很方便呢。
在園子里找了這么一個PowerShell的系列文章,可以參考一下:http://www.rzrgm.cn/brooks-dotnet/tag/PowerShellV2/
(3)其他腳本語言
通過上面的介紹,是不是覺得有時候腳本語言更方便呢。其他比較流行的腳本語言還有Python、Ruby等,大家可以根據(jù)自己的喜好學(xué)習(xí)。
6、自動化測試工具
大家在軟件開發(fā)過程中,肯定需要進(jìn)行反復(fù)測試。但是有的時候測試只是一些重復(fù)的鼠標(biāo)鍵盤操作,花大量時間來人工完成實(shí)在是對人力的浪費(fèi)。這里推薦給大家一個非常強(qiáng)大的自動化測試工具:Selenium。
先看一下對它的介紹:
Selenium也是一個用于Web應(yīng)用程序測試的工具。Selenium 測試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE,Mozilla和Firefox等。這個工具的主要功能包括:測試與瀏覽器的兼容性--測試你的應(yīng)用程序看是否能夠很好得工作在不同瀏覽器和操作系統(tǒng)之上。測試系統(tǒng)功能--創(chuàng)建衰退測試檢驗(yàn)軟件功能和用戶需求。支持自動錄制動作,和自動生成。Net、Java、Perl等不同語言的測試腳本。Selenium 是 ThoughtWorks 專門為 Web 應(yīng)用程序編寫的一個驗(yàn)收測試工具。
如果你想擺脫一步步機(jī)械的操作,等待最后驗(yàn)證結(jié)果的測試過程,那么就好好學(xué)一下Selenium吧。以下是一些參考資料:
Selenium私房菜系列:http://www.rzrgm.cn/hyddd/archive/2009/05/30/1492536.html
利用Selenium自動化Web測試:http://www.oschina.net/question/12_15377
ASP.NET單元測試工具Selenium:http://www.rzrgm.cn/ljzforever/archive/2009/05/20/1467801.html
Selenium IDE實(shí)踐:http://qiuguangchun.blog.163.com/blog/static/126221212010213114517993/
Selenium中文論壇:http://seleniumcn.cn/
本文就寫到這里了,涉及的東西比較多,沒法很詳細(xì)的展開介紹,給大家提供了一些參考資料,有需要的可以自己詳細(xì)學(xué)習(xí)。
如果你有什么能避免重復(fù)操作,提高工作效率的好方法,希望能拿出來和大家共享,讓大家能有更多時間去做更有意義的事,謝謝!






















浙公網(wǎng)安備 33010602011771號