【高效程序员系列】2、别做机器人——让工作自动化
http://blog.csdn.net/jmshl/article/details/6764422
每天打开电脑,首先要做的是打开最常用的软件:要和朋友联系,你打开了QQ;要收邮件,你打开了Outlook;要听音乐,你打开了酷狗……但是你不想做机器人,每天重复的打开这些软件,于是你让它们开机启动。恭喜,你有不做机器人的基本思想。这些简单重复的操作扔给电脑吧,你需要把宝贵的精力用来做其他更有价值的事。但是聪明的你有没有想过,日常工作中有没有其他事也可以丢给电脑,让你摆脱机械的操作?下面分享一下我的经验,如果你也有相关的经验,希望也拿出来和大家一起分享!
1、VS代码段的使用和定义
在使用Visual Studio编程的时候,你肯定会喜欢智能提示,还有代码段的功能。比如输入foreach:
按下Tab,就出来了一个固定格式的代码段:
在编辑器中按下Ctrl+K,Ctrl+X,就可以查看代码段定义了,如下图:
如果你正在使用VS2008,可以在菜单中找到代码段管理器:
其中列出了系统自带的代码段(不明白为什么VB的那么多,C#的那么少。其实现在VB和C#没多大区别,代码段上也应该做到平等。):
相信你应该对一些常用的代码段应用非常熟练了,比如prop,for,if,try。其实代码段也是可以自己定义的,废话少说,下面就介绍一下代码段的定义。
这里介绍三个工具(都是免费的):
(1)Snippet Editor(下载地址)
这是一个独立的软件,而且是绿色版的。解压之后运行SnippetEditor.exe即可。来看一下它的界面:
它会自动识别当前机器上安装的VS版本,然后在左上角列出来。选择不同的版本,左边的树控件会列出该版本的代码段定义。双击代码段文件,左边的编辑区列出编辑的信息。而在状态栏会显示出当前编辑文件的路径。要创建代码段,单击工具栏上的“New”按钮即可。下面针对编辑区的操作进行讲解:
【Properties】
Title | 标题,必须输入,就是显示在树控件中的节点名称 |
Description | 描述,对代码段的详细解释,在VS中输入代码段时会提示 |
Author | 作者,写上自己的大名吧 |
Shortcut | 缩写,在编辑器中输入定义的Shortcut,按下Tab键,即可输入代码段 |
Language | 编程语言,可选HTML、JScript、Visual Basic、Visual C#、Visual J#、XML |
Kind | 代码段类型,可选Class declaration、Member declaration、Member body、Unspecified,一般选择默认Unspecified即可 |
Help Url | 帮助URL,如果有就输入 |
【Code】
该区域包含两部分,上面是文本编辑框,下面是参数编辑框。现在文本编辑框中输入代码模板,然后将光标定位在需要变动的地方,点击下方工具栏上面的“新增”按钮,软件会在文本编辑框中插入一段格式为“$NewLiteral$”的文本,其中NewLiteral即模板参数的名称,根据自己的需要修改即可。下面列出模板参数的属性解释:
ID | 模板参数的名称,在一个模板里不重复即可 |
Defaults to | 该参数的默认值,定义为最常用的默认值,在输入的时候就可以不用再输入了,比如字符串就定义为"",数字就定义为0 |
Kind | 参数类型,可选Literal、Object,一般选择默认的Literal即可 |
Type | 参数的数据类型,一般不需要输入。如果Kind选择为Object,则最好输入参数的数据类型。 |
Tooltip | 提示信息 |
Function | 生成代码的方法,一般不需要输入。在一些特殊场合需要,比如switch代码段中,它会自动列出枚举的值。 |
Editable | 是否可以编辑 |
定义代码段没什么难度,参考系统中默认的代码段就可以写出自己代码段,可以大大提高输入代码的速度。这里有两个特殊的模板常量,$end$和$selected$。“$end$”是用来定义在VS中输入完代码段之后,光标定位在什么地方。“$selected$”一般用于多行代码,我分析了一下系统代码段,感觉没什么实际用途。
【References】
该区域是用来记录要添加哪些dll引用,但是它并不会真的自动去引用,这里只是记录。
【Imports】
该区域是用来记录要在代码中添加哪些命名空间,它也不会真正去添加命名空间。
编辑完成之后点击“Save”按钮保存,然后把该文件放到自定义代码段文件夹中。该文件夹位于“%我的文档%\Visual Studio 2010\Code Snippets\Visual C#\My Code Snippets”或者“D:\Program Files\Microsoft Visual Studio 10.0\VC#\Snippets\2052\My Snippets”,根据自己安装的路径和编程语言查找。将定义的代码段文件放到该文件夹中,再打开VS,输入快捷键然后按下Tab,你定义的代码段就可以被输入了。
(2)SnippetDesignerSetup-For VS2008.msi(下载地址)
这个是给VS2008使用的插件,解压之后安装即可。然后新建一个后缀名的.snippet的文件,用VS2008打开,则会调用安装的插件来编辑代码段。
个人更喜欢第一种方法,所以在此对插件方法不做详细介绍,如果需要了解详细操作步骤可以参考http://snippetdesigner.codeplex.com/wikipage?title=createFromScratch&referringTitle=Documentation,英文的。
(3)SnippetDesigner-For VS2010.vsix(下载地址)
这是针对VS2010的扩展,和VS2008不一样,不在需要安装到系统中,双击后会添加到VS2010的扩展中。装好装好会在VS2010中会添加一个文件模板,可以直接在VS2010中新建一个snippet文件:
顺便提一句,VS2010有很多扩展,可以联网下载,打开扩展管理器即可:
2、代码段编译Snippet Compiler
Snippet Compiler(下载地址)是一个基于 Windows 的小型应用程序,你可以通过它来编写、编译和运行代码。如果你具有较小的代码段,并且你不想创建完整的 Visual Studio .NET 项目(以及该项目附带的所有文件),则该工具会很有用。用一句话概括它的功能:它是一个支持多种编程语言、多个版本的.NET框架、多个代码文件、带智能提示的编辑和编译软件。下面是它的界面,如果需要详细了解,可以参考:http://www.cnblogs.com/conexpress/archive/2011/07/24/2115308.html
3、SQL智能提示和代码段
上面提到了在VS中可以使用智能提示和代码段输入功能,另一个最常用的软件就是SQL Server。但是这么多年了,SQL Server一直没有智能提示功能,直到SQL Server 2008才加入了字段提示功能,但是和VS的智能提示相比,相差十万八千里。如果你还在吭哧吭哧一个一个字段敲SQL代码的话,这里强烈推荐你使用SQL Prompt。它不仅可以提示字段,还能插入代码段,而且代码段还能自己定义……关于它的种种好处这里就不详述了,当你掌握它之后,效率提高不止一两倍。具体的用法可以参考http://www.cnblogs.com/conexpress/archive/2011/07/28/2120432.html#
4、代码自动生成
作为.NET开发人员,手边有一款代码生成工具必不可少。最出名的代码生成工具就要算是CodeSmith了,它功能强大,简单易懂,很容易上手。如果你还不会用CodeSmith,那就赶紧去学习吧。可以参考TerryLee的系列文章:http://terrylee.cnblogs.com/archive/2005/12/28/306254.aspx
CodeSmith是一款商业软件,需要花钱购买的。如果你很尊重版权,又不想花钱购买,推荐你另一款同样强大的免费工具:MyGeneration,也是完全基于模板引擎进行代码生成的,功能上并不比CodeSmith差。可以到http://sourceforge.net/projects/mygeneration/ 下载,也可以参考http://www.docin.com/p-83919214.html 学习如何使用。
5、脚本工具
脚本工具Au3、AHK、Python、Ruby、Windows Power Shell等
虽然现在的工具都有很好的IDE界面,但是有时候脚本工具却能带来更高的效率。而且有些功能用脚本语言很容易实现,但是换成其他语言就比较麻烦了。
(1)Au3
Au3的全名是AutoIt3,它是一种类似于VB的脚本语言,设计的初衷就是为了让工作自动化。下面列举一下它的特点:
语法类似VB,很容易理解。
编辑器带智能提示,感觉这一点比VB6强大,有点像VS2005之后的代码编辑器。
可以很方便的操作鼠标和键盘,也可以录制操作过程,类似于宏。
可以设置快捷键,组合Ctrl、Alt、Shift、Win和其他键,按下快捷键即可执行对应的操作。
可以编译成exe文件独立运行,而且支持Win7。
有类似于VB的界面设计器,可以设计具有Windows界面的应用程序。
具有强大的扩展库,很容易的操作系统、Win32API、网络、文件、数据库、注册表、ini文件……
如下图,可以用类似C语言的#include引入扩展文件,代码可以折叠,甚至有类似于C#的#Region折叠。
界面设计器,感觉和VB6的设计器差不多,还能插入Win32控件。
它包含强大的扩展库,涉及到文件、GDI+、界面、网络、数学、进程、内存、数据库、Office、音频、视频……如下图:
至于它的应用场景就很广泛了,最常用的就是执行大量重复的操作,用Au3记录下这些操作之后,就可以代替人工执行了,比如批量安装软件、实现游戏外挂、热键功能等等。你甚至可以把它看成是一种比VB6更强大的语言,因为它可以编译成exe文件,可以设计具有Windows界面的程序,不需要运行时支持,copy到别的机器就可以运行,还支持Win7。而且它的很多操作都只需要一个方法即可实现,比如从网络下载文件用InetGet(url,filePath),打开文件或执行程序Run(filePath),点击鼠标MouseClick(key,x,y),移动鼠标MouseMove(x,y),发送击键Send(key),关闭窗体WinClose(title)……其中最常用的一个方法就是HotKeySet(hotkey,method),就是注册热键。比如HotKeySet("#q","MyMethod")的意思是注册Win+Q键运行MyMethod方法,当按下Windows键和Q键时,就会调用MyMethod方法。
详细的用法这里就不介绍了,有需要的可以通过如下网址了解:
华军软件园-Au3汉化版(推荐使用,内含中文帮助文档):http://www.onlinedown.net/soft/54314.htm#down
AutoIt中文论坛:http://www.autoit.net.cn/
AutoIt官方网站: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,据说是从Au3开发组分离出去的一部分人开发的,功能和Au3类似,但是语法有点类似C。有需要的也可以到如下网址了解:
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
这个是微软的脚本语言。之前微软只注重界面,命令行方面非常欠缺。特别是对于系统管理人员,有些操作用命令行比界面更快捷。Unix和Linux中的Shell命令非常强大,微软决定在自己的Windows系统上也开发一种强大的Shell命令。下面是PowerShell的介绍:
PowerShell是一款基于对象的shell, 建立在.Net框架之上, 目前支持.Net Framework 2.0. 能够运行在Windows XP SP2, Windows Vista, Windows 7,Windows 2003操作系统上. 能够同时支持WMI, COM, ADO, ADSI等已有的Windows管理模型.
在SQL Server2008中也添加了对PowerShell的支持,如下图:
使用PowerShell也很简单,和cmd用法一样,在运行中输入powershell即可,如下图,在其中也可以输入cmd命令。
如果对PowerShell命令不熟悉,可以考虑使用PowerShellAnalyzer,它也具有智能提示功能。官方网站:http://www.powershellanalyzer.com/
下面举个例子来展示PowerShell的便利。比如新招聘一批员工,需要在服务器上给他们每个人创建一个文件夹。一般人都会想到的是:新建文件夹,重命名,接着再新建重命名。几个人还可以接受,但是如果好几十个人,估计谁都会有点烦。如果用PowerShell则可以很容易解决问题。首先在一个文本文件中输入每个人的名字,每个名字占一行。然后打开PowerShell输入如下命令即可,是不是觉得很方便呢。
在园子里找了这么一个PowerShell的系列文章,可以参考一下:http://www.cnblogs.com/brooks-dotnet/tag/PowerShellV2/
(3)其他脚本语言
通过上面的介绍,是不是觉得有时候脚本语言更方便呢。其他比较流行的脚本语言还有Python、Ruby等,大家可以根据自己的喜好学习。
6、自动化测试工具
大家在软件开发过程中,肯定需要进行反复测试。但是有的时候测试只是一些重复的鼠标键盘操作,花大量时间来人工完成实在是对人力的浪费。这里推荐给大家一个非常强大的自动化测试工具:Selenium。
先看一下对它的介绍:
Selenium也是一个用于Web应用程序测试的工具。Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE,Mozilla和Firefox等。这个工具的主要功能包括:测试与浏览器的兼容性--测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能--创建衰退测试检验软件功能和用户需求。支持自动录制动作,和自动生成。Net、Java、Perl等不同语言的测试脚本。Selenium 是 ThoughtWorks 专门为 Web 应用程序编写的一个验收测试工具。
如果你想摆脱一步步机械的操作,等待最后验证结果的测试过程,那么就好好学一下Selenium吧。以下是一些参考资料:
Selenium私房菜系列:http://www.cnblogs.com/hyddd/archive/2009/05/30/1492536.html
利用Selenium自动化Web测试:http://www.oschina.net/question/12_15377
ASP.NET单元测试工具Selenium:http://www.cnblogs.com/ljzforever/archive/2009/05/20/1467801.html
Selenium IDE实践:http://qiuguangchun.blog.163.com/blog/static/126221212010213114517993/
Selenium中文论坛:http://seleniumcn.cn/
本文就写到这里了,涉及的东西比较多,没法很详细的展开介绍,给大家提供了一些参考资料,有需要的可以自己详细学习。
如果你有什么能避免重复操作,提高工作效率的好方法,希望能拿出来和大家共享,让大家能有更多时间去做更有意义的事,谢谢!