Effective C# 原则48:了解更多的工具和资源

JerryXia 发表于 , 阅读 (816)

对于C#以及.Net来说这是激动人心的时候。这些工具目前还是比较新的,整个社区都在学习如何使用这些工具。一些资源可以帮助你提高你的知识,以及为.Net和C#创建一个更大的知识社区。这些工具是我每天都向C#开发人员推荐的。关于C#实践的全部内容还在写作当中,跟进它们而且不断了解相关的内容。

第一个应该在每一个C#开发人员的工具箱的工具是NUnit, 它可以在www.nunit.org网站上找到。NUnit是一个自动进行单元测试的工具,功能和JUnit很像。和其它大多数开发人员一样,我讨厌写测试代码并且自己测试。NUnit让这些进程都变得很高效,在你有规律的使用这些工具后,可以保证你会习惯测试你所有的C#类。不管什么时候当我创建了一个类库工程时,我都会添加一个NUnit测试工程,而且把自动生成的测试做为一部分添加进来。我添加一个以创建和运行测试的配置,这样可以在每次编译时进行测试。然后,我可以转换活动的配置来控制是否要让单元测试做为正规程序的一部份存在。默认情况下,我运行它们。当我须要进行UI测试时,我会转换到另一个配置上。

在附带的使用NUnit时,你可以通过检测NUnit的源代码学到一些有意思的技术。NUnit使用一些高级的反射习惯来加载和测试你的程序集。它使用特性来查找测试包,测试用例,以及每个测试用例的期望结果(参见原则42)。这是一个非常不错的例子,可以告诉你如何使用这些技术来创建可以自己动态配置的工具,而且它可以广泛的应用。

接来下是FXCop,这是一个免费的工具,可以从GotDotNet(www.gotdotnet.com)上得到。FXCop 分析你的程序集里的IL,看它是否与实践的原则相违背,以及报告这些违例的地方。每一个原则都有一个可靠的公制规范,以及使用这一原则的原因。如本书里所有推荐的原则一样,一些文档中有一个关于某一原则的简短理由。你可以断定这些实际的问题是否遵守这些建议。同样你也可以配置是否把每一个原则都应用到项目中。我并不赞成FXCop 中的一些原则,而且我在本书前面已经说明了原因。然而,像NUnit一样,FXCop 可以成为你创建的正规程序的一部分。每次编译后,可以有一个编译后步骤,可以用FXCop 来分析你选择的原则。图6.1展示了一个从FXCop里输出的例子。尽管一些推荐并不是我喜欢的(例如有一个是让每一个程序集应该是让COM见的),但它确实是一个有用的工具,因为它让你思考很多你已经默认的决定。

图6.1,FXCop分析的一个项目:
Figure 6.1. FXCop analyzing a project.

effective C#

ILDasm是一个IL反汇编器,在本书不同的地方,我已经演示了一些IL代码,它们就是编译器为不同的C#结构生成的。尽管我不相信很多人会在有高级语言存在的情况下,还选择写IL代码,但你应该熟悉它。知道从不同的C#结构上生成的IL代码,可以帮助你成为一个更好的开发者。你可以为你自己的程序集检测IL代码,或者是.Net框架里的程序集。这就是使用ILDAsm,而且它是和.Net框架的SDK一起发布的。IL对于所有开发者来说都是可用的。ILDAsm可以让你看到你的程序集的中间语言。不管怎样,这是一个好的方法来学习.Net框架程序集,这也是得到的原始资料。

这些只是你正式工具箱中的一部份,但拥有这些工具只是提高你技能的一个方面。大量在线的资源以及交流社区可以让你参与和学习,以及增加你自己的C#和.net框架知识。首先也是最重要的就是GotDotNet 网站(www.gotdotnet.com),这是.Net组的官方网站。C#小组在MSDN上有一个站点,目前是在msdn.microsoft.com/vcsharp/ (它偶然在MSDN网站有变动而被重新组织)。如果你的工作主要是基于网络的,试着访问www.asp.net,这是为ASP.Net组提供的。如果你的工作主要是基于Windows Form的,试着看看www.windowsforms.net,这是Windows Form组的官方网站。这些网站包含很多常规编程的引用和实现,这些可能是你的应用程序中想要的。它们都是还源文件的组件,所以你可以检测和修改这些,让它们成为你想要的。最后也是最重要的位置应该要了解就是在MS模式和实践的网页。这个网页目前在 www.microsoft.com/resources/practices/,从这个地方,你可以查到一些常用的设计模式以及一些最好的模式的初始代码。

而且这个地方经常更新一些新的例子的代码以及库,这可能帮助你解决常规的编程问题。在写这些时,你已经可以使用10个不同的应用程序块来实现一些常规的程序要求,我确信当你阅读到这些时,这些地方已经有更多的内容了。

我还要推荐一些C#组的FAQ的订阅:http://blogs.msdn.com/csharpfaq,附带的在这个上,有几个C#组的成员用博客讨论一些C#问题。你可以在这里找到最新的列表: http://msdn.microsoft.com/vcsharp/team/blogs/

如果你学习更多的而且对语言和环境想得到更深入的了解,你可以检测共享的CLI(code-named rotor)。这包含.net框架以及C#编译器的一些核心内容。你可阅读这些资料来对C#语言的每一个功能和.Net框架得到更深入的理解。并不是所有的.net商业框架都有可用的共享资料:例如,特殊的Windows代码并没有发布共享代码。然而,这些已经发布了的子集,同样够你学习更多的关于CLR和C#语言内部的东西。

C#编译器已经和共享的CLI资料一起发布,这是用C++写的,它做为底层的CLR代码存在。你须要对C++有很深的背景知识,以及对编译器设计有清楚的认识才能很好的理解它。现代的语言编译器是复杂的软件块,但CLR资料是一个有用的工具,来理解.Net框架的核心功能是如何实现的。

这里只是给出了一个简单的列表, 我只是在众多资料中介绍了一个表面。很多资料你都可以多MS上得到,或者其它在线网站,或者是书。你越是多的使用这些工具,你就可以得到越多的知识。整个.Net以及C#社区是在前进的,因为它发展的很快,这些列出的资源也可能不断的在改变。你可以自己学习和自己写稿。

添加新评论