我是visual studio的忠实用户,从visual studio 6一直用到了visual studio 2005(典型的80后是吧)。我很想开始使用Visual Studio 2008,但是我不能,因为Resharper还不兼容.NET3.5的语法。 Resharper是我一直非常喜欢的工具。响当当的名声绝对不是吹牛皮吹出来的。如果你的公司在寻找一个提高开发人员效率的工具,那么首选应该是Resharper,这一笔投入是值得的。如果你想知道为什么,那么请看一看我的一系列上手指南。
这一系列不是对每个功能的中文帮助,而是我对开发中可能涉及的功能需求,利用Resharper来完成。有些是Visual Studio有的,但是做的不好,有些是没有而Resharper发明的。总的目的都只有一个,就是加快你编写代码的速度。毕竟,我们的终极目标是在5点 半前心满意足的关上电脑回家。 诚然,学会一个新的语言,或者一个新的工具,都有一个上手的问题。希望我的文章能够帮助你尽快地熟悉Resharper。在熟悉了它以后,你使用鼠 标或者是无效击键的频率会大大地降低。当然这也需要对visual studio本身的使用有一定的基础,毕竟它Resharper是建立在这么强大的一个IDE基础上的。 Resharper进阶一:简要介绍 Resharper能带给你的效率提升如此之高,以至于在我订阅的所有.net专家的blog里面,所有的人都在关注它。要知道他们都不是一般的 coder,大多数是CTO或者技术总监。当我三个月前开始使用Resharper时,想要搜到一些中文的介绍,或者是经验性的文章却十分困难。大多数人 似乎不关心它的存在。博客园里充斥着因为安装Resharper而拖慢系统,导致VS不稳定,机器响应速度下降,VS启动速度下降等等的论调。幸运的是, 这些在我这里都没有遇到,也许是因为2G的内存的缘故,反正devenv.exe所占的200~300m内存并没有使我感觉机器在变慢,而且我的VS几乎 是一直运行中,没有一会关闭一会打开的时候,所以我只需要忍受Resharper在加载时的半分钟初始化一次就够了。相比于它能带给你的效率提升,这些问 题都是微不足道的(一家之言)。 如果你在VS环境下写代码时几乎不用快捷键,那我觉得你没有必要往下看了。因为Resharper是通过快捷键来提升你的效率的。但是相信我,如果你曾经在星际中一遍一遍被人虐的话,你应该能体会到快捷键带来多么大的变化。 首先在安装完Resharper之后,你主要通过三种方式用到或看到它: 一是在菜单栏上,如果是3.0版本的话,它会默认的屏蔽掉“重构”菜单栏,也就是说你按Alt+R的时候,弹出的是Resharper的下拉菜单而不是“重构”,为什么?因为你不再需要“重构”菜单了。如果是以前版本,比如2.0,似乎需要您手工的完成这一步,方法如下: 工具——自定义——重排命令,然后把“重构”菜单删除,毫不犹豫地! 你可以简单地这样体验一下:Alt+R,N,回车,就可以在当前项目中添加一个类,还记得以前你是怎么做的吗?在解决方案资源管理器中选中一个项目,然后右键,在长长的弹出菜单中选择:添加——类,如果你的电脑够慢的话,在3秒钟之后才会弹出一个对话框来问你文件名。 另一种方式是:看到竖直滚动条了吗?在它的右边多出一个边框来,上方是一个“绿色/黄色/红色”的方框,而边框上会出现一道一道红的橙的横杠。什么 意思:当红杠出现时,表明你的代码在那个位置出现了错误,如果是橙杠,表明那是一个警告,多半是没有检测null值或者声明后未使用之类。 如果当前文档的所有错误和警告都得到了适当的处理,则不会再出现横杠,而最顶上的方框也会变成绿色; 如果没有错误但有警告,则是黄色,这时编译可以通过; 如果那个方框是红色,则表示有编译通不过的错误,这时你应该通过点击红杠,去修改您的代码。如果你即使编译,也会报错并无法生成。这样做使你在写代 码时就能及时得发现你的错误,而不需要等到编译时。这样做也使你的效率得到了提高。因为编译至少要耗去您半分钟的时间,并且强烈的读写您的硬盘,特别在你 的硬盘转速慢时,比如笔记本上,这一过程是那么的令人心痛。 第三种接触到Resharper的自然是快捷键了。右键菜单当然也有很多的功能,但是那太弱智了,太慢了。我们需要的是专业,我们用的工具定位不是 打毛衣的大妈,而是开发的专业人员,如果你连快捷键都无法掌握,那真的得对你的开发技巧打一个大大的问号。试想一下这个场景,当你脑子里冒出这个念头, 啊,这个类,应该提出接口来,要这个方法,这个,和这个,还有这两个事件。啊,不行,我现在就得提,不然就忘了。我得新建一个接口,点哪个来着。啊,在哪 里新建……建好了,对了我要提取哪几个方法来着。(我晕死)许多时候你的念头都是一闪而过的,需要你的操作也相应的跟上。这个操作在Resharper就 是,把光标移动到类名上,然后点Ctrl+Shift+R,除了你想要的提取接口,其他的重构功能也一目了然。而且远比VS自带的要快。 至于右键,如果你刚开始实在记不住快捷键,只能使用它了,或者Alt+R,实际上它也要比右键菜单快一点点。 真正激动人心的是在随着你逐渐熟悉Resharper以后,能够带来的诸多方便之处,我将会在接下来的一系列随笔中讲述。
Resharper进阶二:快速定位
摘要快速代码定位的核心就是三个功能:
转到定义 当你的光标在一个变量上时,按下Ctrl+B就会跳转到这个变量声明的地方。这可能是某一个字段,某一个方法的参数或者一个局部变量。 当你的光标在一个类型上时,按下Ctrl+B可能发生两种情况,一是当这个类型的定义在你的项目中有源代码时,会跳转到这个源代码文件。如果没有源 代码,则会打开一个对象浏览器。有一些使用者更期望跳转到元数据文件,但是我更喜欢对象浏览器,这样类型的公有属性、方法、事件都被列出来了,可以一目了 然。就我的经验,列表永远比下拉框,选框更加易于查找。
查找所有使用
它的优点包括:
我现在已经记不起来在没有Alt+F7之前我是怎么查找的。反正现在我几乎不怎么样Ctrl+F了,除非我忘记了某个变量的名字。如果是这样,多半 这个名字需要refactor,那也是Resharper的另一大块功能所在。也许有人对这个功能嗤之以鼻,但是用过CAB的人都知道,订阅和发布某个事 件的签名,完全是字符串,如果你不用搜索来找到它的话,你都不知道这个控件的鼠标点下去,到底有多少个处理程序在背后开始工作了。用了Alt+F7来搜索 这个字符串,等于在查找背后所有的调用者。 不过提示你,当光标停留在一个类型上时,要慎用Alt+F7,假设是一个string,你应该能想象到得找到多少个使用。 从这里浏览 实在不知道用什么中文来翻译这个navigate from here...,只好直译了。你可能在这些时候需要它: 当你要找这个类的所有继承者,或者接口的所有实现者时,按住Ctrl+Shift+G会弹出一个菜单,其中有Inheritor,用方向键来选择并 回车,如果只有一个实现,那么直接跳转到这个实现,如果有多于一个,或者因为使用了partial分布到好几个文件中,会再弹出一个菜单来供你选择。与此 类似,如果你选择base,则会跳转到基类或接口中去。 同时这个功能也囊括了前面的转到定义和查找使用,如果你偷懒的话,只记住这个就可以了,虽然Ctrl+Shift+G的快捷键有一点生僻,但是用着用着你就发现顺手了。 这个功能不可不谓是用来熟悉一套框架的利器,可以让你迅速找到某个接口的所有实现,和Alt+F7合用,可以让你在一个庞大的解决方案中如鱼得水。 下一次,我们该来讲一讲威力无比的Alt+回车了
万能的Alt+Enter能够帮你完成很多编写代码过程中的dirty work,总结起来大概是这么些:
这个功能Visual Studio也已经帮你提供了,就是每次你在类名的后面加上:ISomeInterface的时候,它会提示你按Tab键就生成接口中所有方法的存根。如 果你这时没按,后来,你还可以把鼠标悬停在这个接口名,会出现一个小小的,小的不能再小的,费死劲才点得中的智能感知符上,然后生成方法。在安装了 Resharper以后,这个功能被视为与其它警告一样的处理办法。如果你:ISomeInterface以后,又没有实现它的方法,这一行代码会打上波 浪号,表示有警告或者错误发生。按下Alt+Enter,则会为你生成这些方法。 有的时候你可能会忽略的一些细节,Resharper不会忽略,比如你用了隐式类型转化:
Button btn = sender as Button; //隐式类型转化
而没有接下来检测它是否为空,就直接使用。这时Resharper会提示你一个警告。如果你按下Alt+Enter,它会把你之后的代码包括在一个if语句中:
if (btn != null)
{ //你接下来的代码 } 不过令我不满意的是,我时常要的是这样的效果:
if (btn == null)
return; 不知道这个行为能不能在配置中修改。 为你提供处理当前错误的一些建议 被Resharper标记为红色的即为错误了,有时错误也可能是你有意为之。比如你随意地在View.cs中写下了:
_presenter.GetAllLayers();
而实际上你的Presenter.cs中还没有这个方法,那么按下Alt+Enter就会立即在Presenter.cs中添加这个方法,并跳转到 该方法,如果Presenter不止分布在一个文件中,会弹出对话框让你选择。相比于Visual Studio经常臃肿的对话框,Resharper的弹出对话框往往十分直接,你只需立即用方向键选你需要的并回车。 为你简化当前的臃肿代码 你的代码如果被Resharper视为多余的,那么会以灰色标识出来,例如:
this.Text = "标题栏文本" //this为灰色
btnOK.Click += new EventHandler(btnOK_Click) //new EventHandler为灰色 多余的代码并无害,只是显得不那么简洁,如果你头一次在安装了Reshaper之后打开你之前编写过的代码会发现大量的灰色代码。如果你查看设计器 生成的代码,会发现Reshaper的竖直条几乎变成了橙色的一条了。基本上,你都可以用Reshaper为你自己的代码瘦瘦身,设计器产生的,比如窗 体,或者Dataset还是不要动的好。
Resharper进阶五:高效的代码结构调整
通过我之前介绍过的Alt+F7和Ctrl+B,你可以很快的在一个代码文件中知道函数的调用情况。但是有的时候,代码文件非常复杂,里头有几十个 函数都算是小儿科,甚至一个构造函数就有N多个重载。这时你想清楚的了解文件中各个函数,属性,字段,事件等等,就不是那么轻而易举的事情了。 在Visual Studio中,你可以通过这些方式组织或审视你的代码: 用region,这是最常使用的,我最喜欢的分法是:Field, Property, Event, EventHander, 然后根据实际情况,Constructors(如果构造函数重载多的话),Helper(如果有许多公用的流程的话),再就是跟某个特定任务想关联的一系 列方法组成一类。
说了这么多,其实就是想把对象浏览器和region的长处结合起来,既可以清晰的分类,又能一目了然的找到需要的方法。Resharper这时帮上你的大忙了。用Ctrl+F12,就弹出一个像右边这样的窗口来。 这里面,按照你的region来显示,这样读你的代码的人也受益了。每个方法的参数,返回值都如UML一样列出来。
这绝对是Resharper里面最酷的功能,你快打开Visual Studio试一试吧。
Resharper进阶六:重构才是王道(上)
重构是一种精神,证明你在致力于提供高效的、精炼的、健壮的代码,而不是凌乱的、晦涩的、漏洞百出的代码。 Visual Studio 2005提供的重构包括了如下:
这些方法在Resharper中全部都支持(但Resharper的重构远不止这些),它们对应的变成了:
我知道很多人都声称自己E文不好,但是,这确实都是很简单的单词,难不倒任何人的。这些重构的功能是人所共知的,下面就告诉大家一些Resharper特有的,首先,重构的快捷键是Ctrl+Shift+R: 1、对于类,除了提取接口、基类,你还可以移动它到其他的命名空间和移动到别的文件里,这是一个实用的功能,也许你不信,但是我这真的有个人,把所有的business entity都写在一个DataObject.cs里面。你难以想象,我打开它时嘴张了多大。 2、对于字段,提供了:
3、对于方法,提供了:
4、在方法体内部:
IPoint point = new PointClass();
point.PutCoords(_point.X, _point.Y); 变成这样子:
new PointClass().PutCoords(_point.X, _point.Y); //这是个糟糕的例子
还有一些更广义上的,帮助你对代码进行调整的功能,我另写一篇吧,不然太长了。
Resharper进阶七:重构才是王道(下)
插入代码
包围代码 调整方法的位置 其他琐碎的功能 关于Resharper的重构功能就是这些,我可能天真地把很多额外功能都算在重构里了,但是它确实能够帮助你快速的对代码进行调整和优化。所以,请不要深究我对重构的概念认识是不是混乱。
Resharper进阶八:增强的浏览功能
浏览参数的方式 浏览打开过的文档 和大家分享了很多Resharper使用的技巧,点点滴滴都已经融入我日常的开发工作中了。当然很不全面,例如与Nunit的集成,由于我们不是测试驱 动,所以没有任何体验,自然也不敢大放厥词;也很主观,我觉得它好,你可能觉得它不好,萝卜青菜各有所爱。再说,它也不是没有白痴的地方,在文档上点右键 增加的一个Close All功能,可以关闭所有打开的文档,关闭了干什么,对着一个空白的屏幕发呆么?我觉得原生的“除此之外全部关闭”就够了。还有一个定位的功能 (Locate in Solution Explorer),真是没用,如果你在VS选项中设置了,在解决方案管理器中跟踪活动项,那么VS自动就给你定位了。 |
原帖地址:http://hi.baidu.com/shouxin1014/blog/item/2fdf7fedf47df0322697918e.html