从最初的GW BASIC到ASP,再到.NET,编程之路可谓是充满挑战与成长。当第一次接触到Visual Studio 6时,那种激动的心情至今仍记忆犹新。如今,从VS6到VS2010,这段旅程让感慨万千。本文将分享对Visual Studio 2010新特性的一些看法和体验。
系统在Windows 7下,搭载3GB内存,运行得非常顺畅。一个月前,安装了VS 2010的测试版,并开始使用它。说实话,曾一度认为PC用户会认为开发者不配拥有如此出色的用户界面。
全新的Aero外观,摒弃了老旧的XP风格,界面整洁且具有现代感。编辑器中使用了True Type字体,提高了可读性。值得注意的是,编辑器本身是使用WPF开发的。
缩放功能也非常有用,它可以帮助在设计应用程序时不错过任何细节。新编辑器的特点之一是调用层次结构。选择一个方法调用,然后点击“调用层次结构”,哇!它以树状视图的形式展示了整个程序的流程,这是VS2010最出色的部分。
另一个让感兴趣的功能是高亮显示。选择一个变量或任何符号,它将高亮显示所有引用。这是自VS6以来一直期待的功能,虽然不能确切地说它有什么具体优势,但它确实让程序员在编码时的生活变得更轻松。
搜索功能也非常创新,它可以像对象浏览器一样搜索所有符号,并允许多重搜索。"从使用生成"是一个非常周到的功能。如果在类"X"上编码,并创建了类"Y"的实例,并希望调用尚未在类"Y"中定义的方法"Save";Visual Studio会在编辑器中给一个编译器错误,说它是未定义的。现在点击代码将给一个选项来定义/编写类"Y"的"Save"方法,甚至不需要移动到类Y。还没说完;最好的部分是它提供了一个桩来工作,所以开发者只需要填写符号名称和代码。这适用于方法、变量甚至类和接口。
JavaScript的Intellisense比以往任何时候都要好。但是将整个支持带到JS文件仍然是一个梦想。微软应该找到一种方法,可以为JS文件设置一些属性,在设计时查看它将被引用的页面,以便在编写代码时。让解释一下;如果在page1.aspx中输入document.getElementById('label1'),它会识别并显示与元素相关的Intellisense方法和属性。然而,如果是在Scripts.js这样的文件中编写整个脚本,它将无法识别,因为VS不知道引用的是哪个页面。
WPF在VS2010中得到了最多的关注。现在可以为WPF控件拖放数据源,包括自定义数据模型、对象和任何WCF/XML服务。不确定有多少开发者会真正使用这个功能,因为通常更喜欢编写代码而不是使用拖放。
实体设计器对于像这样的硬核程序员以及应用程序设计师/架构师来说非常有用。这允许首先创建实体关系模型,然后从此创建数据库。对这个工具感到震惊。记得过去在逆向工程上花费了多少时间。
数据库项目在新特性上得到了提升,它允许创建项目,这与在VS中创建任何其他应用程序非常相似。有些人可能会争论说自VS2005以来就有这个功能,但必须探索微软是如何简化程序员生活的。然而,必须承认,数据库项目在变得像VS中的其他应用程序一样健壮之前还有很大的改进空间。
并行编程是VS2010中实现的突破性功能。与传统类型不同,有线程安全类型可以用于并行编程。想说这是一个好主意,因为每次尝试基于线程的编程时,都会遇到一些无效的线程访问异常。老实说,在这方面还没有探索太多,将在下次发布时更新。
Silverlight类库是一个新的项目类型,对于任何Silverlight开发者来说都是一个福音。这将帮助开发者为Silverlight应用程序编写有效的代码。这是从传统模式的合理进步,其中有人编写一个库,然后配置一个WCF或任何服务与Silverlight应用程序联系。
VB.NET万岁!得到了VB.NET的自动属性,这些属性以前只在C#.NET中可用。有一个小的自编应用程序,它为属性和变量生成代码。自从自动属性出来后,可以安全地放弃属性生成器应用程序。是的,使用VB而不是C#。
集合初始化器现在可以使用,这在以前的版本中是缺失的。总体上,初始化器是.NET的突破。
Lambda表达式是引入的另一个伟大功能。以前在JavaScript中做过类似的编码,现在很兴奋在VB.NET中也有同样的功能。它只不过是将/分配一个完整的表达式/方法给一个符号。喜欢这个,它对来说看起来像是一种很酷的编程方式。
Dim sum = Function(x, y) Return x + y
Console.WriteLine(sum(1, 2))
这对来说就像是VB.NET中的F#的一个小提示。
据说VB.NET现在支持Ruby和Python,但不确定实现方式,它仍然在"尝试列表"上。
嵌入式类型似乎解决了长期以来的头痛问题。每次在强类型类库中进行更改时,都必须重新编译所有依赖它的库,然后将其发布到GAC。现在有了嵌入式类型,可以编写代码,它将是版本独立的。可以在这里找到更多信息。如果应用程序中不使用强类型库,那么这个对来说并不适用。
对于每个版本,C#都得到了一个名为"dynamic"的新功能。这个关键字将通知编译器该类型是动态的,将在运行时绑定。这个功能目前还不适用于VB.NET。也许,这将在下一个版本中开始,就像每次发生的那样。
Lambda表达式和集合初始化器已经在C#中得到支持。
嵌入式类型也适用于C#。
这是VS2010中的一个热门新功能。现在什么是F#?微软说,函数可以被视为值。该死!这不是很酷吗。老实说,没有尝试过太多的编码,但就所做的程度而言,意识到可以用这个做奇迹。
在F#引入的所有功能中,延迟计算真的很酷。结果将不会被计算,直到它需要。现在可以编写一个有效的对象关系模型框架,对子实体进行延迟加载,而不需要编写任何额外的代码。
有了大多数.NET语言的传统功能(并行编程、异步、泛型、集合),F#对于复杂应用程序来说是一个非常有效的语言。
然而,应该等待看看它在市场上的表现如何。