我常用的几个 IDE 插件列表如下(详细功能介绍见各自公司网站):
- Visual Assist (Whole Tomato)
- CodeRush (DevExpress)
- Resharper (JetBrains)
- C# Refactory (Xtreme Simplicity)
- Toghether 2.0 for VS.net 2003 (Borland)
- Smart Document Environment (Visual Paradigm)
Visual Assist
自从在 Visual Studio98 中使用 Whole Tomato 公司的 WndTab 插件将传统的 MDI 窗口显示方式改为 Multi-Tab 方式之后,工作效率极大提高。尤其,WndTab 免费,提供源代码。
于是,当后来看到 Roy 在用 Visual Assist,也就跟着装了一个,感觉非常不错(那段时间写 ATL 比较多)。四年来,Visual Assist 版本已经升级到目前最新的 Visual Assist 10.x。自从 6.x 开始分别提供 for Visual Studio 和 for?VS.net 2003 的版本,但一直没见到其在针对 C#/VB.net 方面提供有效而有力的支持。最近一年来,一直在使用 Visual Assist X 10.0x 版本,最新的 10.1 因为没有找到 crack,就没有体验过。想必应该有了不少的改进了吧。
除此之外,VA 的拼写检查和模仿 Word 的 SmartTag 的拼写纠正功能也很有特色。
其 Suggestion 功能在几个插件中属于比较特别的——不仅仅提示 Member List 或者 Param List,还会记忆你的输入。比如在上一个方法中定义了一个变量,虽然在当前方法中其不可见,但当你想定义一个同样类型的变量的时候,自动就会提示使用先前的命名。这一点虽然没有太大用处,却也让人觉得很贴心。
VA 比较特别的还在于它的 ContextMenu:按住 Shift 键,点击鼠标右键的时候出现 VA 的菜单,否则出现 VS.Net 自己的菜单。
另外,VA 可以通过工具条上的按钮,或者菜单中提供的功能开启或暂停使用。因为 VA/Resharper/Coderush 等 VS.net Addins 都提供了对代码的 Parsing ,如果在一个项目中同时打开的代码文件比较多,而每个文件中的代码又比较长,那就会让 IDE 变得很慢很慢。为此,适当的时候关闭掉 VA,能够节约不少系统资源。避免了 IDE 莫名其妙地失去响应。
以上两点非常值得其它 IDE Addins 学习,尤其后者!
总的来说,如果你经常使用 Visual Studio 或者 VS.net 2003 进行 VC 开发,那么 Visual Assist 是最适合的一个 IDE 插件。在很多方面,后来者如 CodeRush、Resharper 等虽然已经做得更好,但针对 VC/C/C++ 的支持,Visual Assist 当之无愧是 NO.1,老 大!
对了,VA 采用 VC 开发,而非 C#,因此性能和资源占用方面比 CodeRush 和 ReSharper 好许多。
CodeRush
不得不佩服,DevExpress 公司出品的很多产品都非常不错。犹如公司的名字那样,该公司出品的产品都是为了提高开发效率、加快并简化软件开发。
CodeRush 早在 Delphi 开发者中流行过,而今的 for VS.net 2003 的版本中更是有许多许多绝无仅有的功能,令人不得不佩服。
CodeRush 支持 VA 及其它很多插件所提供的一些基本功能:
语法分析、代码高亮、错误提示、增强的智能感知、模板(环绕、预定义)等。而最特别的,也是最根本的一点:CodeRush 是一个插件平台——你可以为 CodeRush 开发插件,而不是 IDE 插件。为此,CodeRush 提供了创建其插件的 Wizard,为你生成基本代码。为 CodeRush 开发出来的插件可以借助 CodeRush 提供的基本功能实现非常漂亮的表现效果:
CodeRush 的模板使用起来非常方便,不需要按特别的快捷键——因为它很巧妙地避开了与英文字母的冲突,使用时只需要输入模板定义快捷方式,然后按一下空格即可:例如,输入“recon ”,相应的 suggestion 菜单就显示出来了。
在自定义模板中一样可以使用上图中漂亮的 ActionHint 提示等表现方式,这里就不细说了。
我最喜欢的一个功能是 CodeRush 针对 .Net 的 #region 提供的转换效果和针对花括号的配对虚线(与所有其它 CodeRush 支持的效果一样,均可以设置颜色和透明度,部分动态效果还可以设置移动速度和淡入淡出效果):
(图)
这样看起来是不是方便多了?总结而言,CodeRush 的定位不是简单的 IDE Addons,反而有点像玩 CS 的朋友都知道的 Amx 和 Amxx 那样的针对插件的运行和二次开发平台。CodeRush 的语法高亮和智能感知等功能比较一般,但表现方式非常特别——甚至包括多种动态效果。
DevExpress 公司针对 CodeRush 开发了一个插件:Refactor,提供 Refactoring 功能。因暂时不零售不提供评估版下载,因此还没见过。
这里有一个 DevExpress 做的 VA、ReSharper 和 CodeRush 产品特性比较,可以参考一下:
http://www.devexpress.com/Products/NET/CodeRush/FeatureComparision.xmlResharper
Resharper 提供了基本的代码分析功能,如语法高亮、智能上下文等。各项功能的实现比较中规中矩,使用起来也很方便。
用过 CodeRush,再看看 VS.net 中默认提供的针对 #region 这样的代码表现方式,就忍不住要抱怨 Resharper 为什么不能也提供类似的效果呢?
(上图是采用 CodeRush 后 Region 被 repainting 为类似 VB 中的分隔横线,code block 的区分一目了然)
Resharper 的设置功能没有 CodeRush 那么繁琐,也就没那么灵活。因此不能定义语法分析的色彩(VA 可以),甚至很多效果都不能更改。当然,如果不与 CodeRush 对比,也许不会有此牢骚。但如果要与 CodeRush 对比,那么 CodeRush 2.5 倍于 Resharper 的零售价格倒也的确让人难以接受。
相比之下,Resharper 比较实用,各项功能都比较平衡。
就特色而言,我最喜欢它的语法分析中的一个非常不错的特性:如果你修改了某个 Method 的参数,而忘记修改对应的 Comment,ReSharper 会发现并将注释中的对应参数红色高亮——就好比在代码中出现了一个没有定义的变量一样。这样的功能对于我这样比较苛求于细节的人而言,非常非常贴心。
再有,在一段代码中如果 ReSharper 发现了不能识别所属命名空间的方法或者枚举等,将会自动搜索并建议引入相应的命名空间。你所需要做的就是决定是否采用它的建议。对于代码中引用了却并没有使用的命名空间,ReSharper 也会将引用指令变灰,并提示可以将它去掉。
其自定义模板功能是几个插件中最好用的:在模板中可以自定义变量,并为变量设置不同的类型、为之赋值。例如,除了 VA 等可以实现的在模板中某个位置插入当前时间、当前项目名称、文件名称等等之外,ReSharper 还可以插入 智能感知建议、指定变量类型等。CodeRush 在这方面功能更为强大(主要是表现效果非常不俗),但定义和维护操作相对要复杂了太多太多。
另外,ReSharper 从名字来看,其重点在于 Refactoring 功能。安装之后,在 VS.Net ContextMenu 中多了一个子菜单:Refactor。其中提供的各项功能可以方便地对代码中的 class、method、property、field 等等进行重构。在某些方面,其重构功能比 Together for VS.net 有过之无不及。
在使用过程中发现,VA 和 ReSharper 似乎有所冲突——想必是两者都提供语法分析和高亮,以及替换了 VS.net 2003 的智能感知而导致的——ReSharper 有时候会导致切换代码 Tab 失效,文本编辑窗口不 Repain。而仅仅是关闭 VA 也没有改善,于是我卸载了 VA,就没再遇到过这样的问题。
ReSharper 的语法分析还有一个小小的不足:针对条件编译的支持不足,导致在条件编译的不同分支中定义了同一个变量,语法分析的结果为变量名冲突、重复定义。
至于同时安装 CodeRush 嘛,就没敢试验了,就别为难我的本本吧。
C# Refactory
Xtreme Simplicity 公司的产品线与 DevExpress 公司非常相似。其推出这一产品比较晚,如同名字可知其功能定位主要针对重构,而且是 C# 的重构。相对于 ReSharper 和 Together,重构功能还比较弱。另外提供了针对代码的统计分析功能,暂时没有太大的用途。
网络上暂时没有针对最新版本 2.0 的破解,为了体验新版本的功能,花费了我一个宝贵的中午 crack 了一个 dll,如果需要可以从这里 下载
Together for VS.net 2003
废话少说,强烈推荐!
完整的 UML 建模能力、强大的 Refactoring 功能
(图)
(图)
自从使用了 Together 6.1/6.2 和 for VS.net 2003 之后,Rose 2003 彻底被我放弃(因为我的 PM 中并不用 RUP,也不用 ClearQuest 等一大堆东西)。用来建模或者做设计,尤其针对 C# 项目,Together for VS.net 2003 最适合不过——何况运行速度快,而 Diagrames 也更漂亮。
Viso 2003?呵呵,只是在 UI流程设计、逻辑设计和网络结构设计等等时候用过。虽然是一个不错的绘图工具,但用来做设计,还是远远不如 Rose 和 Together 之流地。微软小朋友要努力哟!(数据库设计如果不考虑其它产品,可以用 SQLServer 企业管理器的关系图很方便地完成。而 ER-Win 和 VS.net 自带的设计工具,甚至 XMLSpy 的 DBSchema 设计及代码生成等都非常不错)
Rational Rose 自从被 IBM 收去,也许是我孤陋寡闻,仅仅见到一个 for VS.net 2003 的 XDE 版本。可目前的 XDE 功能有限,但想必其新版本一定非常不错,希望 IBM 是在酝酿着一个大动作吧。
Together 另外有一个单独的版本,因为是使用 Java 开发的,所以虽然用起来各项功能也还不错,就是资源消耗太大...Together 与 Together for VS.net 2003 之间可以通过将各种图导出为 XMI 文件并导入的方法实现共享。但要注意,不知道是不是我使用的 Together 6.2 版本有点老,会有部分信息丢失(不是很重要)。而且,两者在图中的一些细节处理也稍有不同(例如时序图)。
Together for VS.net 2003 运行速度更快,资源占用更小,图也更好看 ^oo^
在开启了对项目的 Model 支持后,它会自动为不同的命名空间创建 Class Diagrams。而在 Class Diagrams 中进行的操作也会时时地体现到代码中。为此,TfV 在设计图方式下就提供了对 Refactoring 的支持功能,因而在这一项上也比 ReSharper 更加专业,更加强大!
说道重构支持,如果你和我一样喜欢 Borland 公司的 JBuilder,尤其 JBuilder 9/X 和 2005,你会发现 JB2005 中提供的 Refactoring 功能与之完全如出一辙——毕竟是同一家公司嘛,非常好用!
相比 ReSharper 的重构支持,在进行重构前会有一个操作提示,将下一步要进行的重构改动都列举出来,使用者可以确定是否继续进行重构。这一点,ReSharper 应该好好学习一下。
另外,在对一个 Class 改名的时候,TfV 将自动更改其文件名,而 ReSharper 会在提示确认后进行修改。
而对 Method 进行重构时,ReSharper 允许删除已有参数,而 TfV 仅仅允许增加参数。
TfV 仅仅是一个建模和重构工具,带有一定的代码生成功能,还带有 QA 分析,但不对代码进行分析,因而对系统资源的占用相对来说要小很多。
因为使用 CodeRush,不但设置麻烦,而且在打开一些较大的项目的时候容易失去响应。好在 ReSharper 最新版本 1.05 相对以前的版本稳定了许多,所以最近所以目前我主要使用的是 ReSharper 和 Together for VS.net 2003。
Smart Document Environment
提供了与 Together for VS.net 相似的功能。但在操作习惯和显示的图例方面都与 Rose 和 Together 等很不相同。其实我并没有真正把它用起来,但经常做各种设计文档的我第一眼看到它就被它独特而漂亮的各种图例吸引住了。
漂亮,但使用起来不如 Together for VS.net 2003 那么方便而简洁。
但 SDE 支持导入/导出 XMI,因此可以和 Together 交换数据(未经测试效果)。所以,我初步考虑使用它来把设计图变得更加漂亮,而后用于需求和设计文档——面子功夫 ^oo^
类似于 Borland Together Control Center,SDE 对应着有一个独立于 IDE 的版本:Visual Paradigm,有兴趣不妨看看。