通过我之前介绍过的Alt+F7和Ctrl+B,你可以很快的在一个代码文件中知道函数的调用情况。但是有的时候,代码文件非常复杂,里头有几十个 函数都算是小儿科,甚至一个构造函数就有N多个重载。这时你想清楚的了解文件中各个函数,属性,字段,事件等等,就不是那么轻而易举的事情了。
在Visual Studio中,你可以通过这些方式组织或审视你的代码:
用region,这是最常使用的,我最喜欢的分法是:Field, Property, Event, EventHander, 然后根据实际情况,Constructors(如果构造函数重载多的话),Helper(如果有许多公用的流程的话),再就是跟某个特定任务想关联的一系 列方法组成一类。
当你用region把你的代码组织好了以后,确实显得很简洁。但是问题来了,当一个同事check了你的代码,然后准备修改,这时,他想要理清你的思路, 于是在你的代码里开始奋战,啊,这个调用了那个,噢,这个地方可以接受0个或者1个或者三个参数……过了一个小时,他总算可以开始写他要改的那个部分了。 region的缺陷就是让写的人很明白,而读的人还是很费劲。
用对象浏览器可以把你的方法结构展现出来,但致命的是它是按照字母排序的,对于我们中国人来说,实在是难以找到像 FilterSelectableLayerByName这样一个其实自说明性很强的方法来。而实际上你又把它装进了一个“图层控制”的region里 面,而你的读者却无法参透你的用意来。(如果你常常下载codeproject上的代码的话,会知道这种事情常有。)
说了这么多,其实就是想把对象浏览器和region的长处结合起来,既可以清晰的分类,又能一目了然的找到需要的方法。Resharper这时帮上你的大忙了。用Ctrl+F12,就弹出一个像右边这样的窗口来。
这里面,按照你的region来显示,这样读你的代码的人也受益了。每个方法的参数,返回值都如UML一样列出来。
- 如果需要浏览到某个方法,直接双击它的名字;
- 如果要把某几个方法装进一个新的region,则可以选中方法,点工具栏上的像框的那个图标;点叉则会删除这个region并把相应的方法移到外面来。
- 如果要调整某个方法的位置,比如把它移到别的region里面去,只需要在这里拖动这个方法即可。
- 更可喜的是,你想要的从这里浏览、找到所有使用和重构的功能也在这里提供了,在某个方法上右键你就能开始操作。
这绝对是Resharper里面最酷的功能,你快打开Visual Studio试一试吧。