定义语言环境_第1页
定义语言环境_第2页
定义语言环境_第3页
定义语言环境_第4页
定义语言环境_第5页
已阅读5页,还剩8页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、10第 章 定义语言环境大多数专业程序员都要使用多种编程语言来编写程序,对每项任务均采用同一种语言编程的程序员就像是靠钉子来完成所有工作的木匠。正如木匠要用特殊的构件来满足特殊的要求一样,程序员通过各种编程语言来满足不同的开发要求。本章介绍如何在开发环境中利用编程语言来满足特殊的要求。通过本章的学习,读者会发现语言环境不仅确定了哪种语言最适用,而且还确定了开发人员与所选择语言进行交互的方式。有些情况下,要在一个应用程序中使用多种语言。虽然使用多种语言会增加复杂性,但正确的开发工具可以使开发工作更容易。就像木匠要用斧子和改锥来做书橱一样,程序员可以用多种语言方便地开发某一具体应用程序。如果木匠总

2、是用钉子来做书橱,做出的书橱肯定不好。同样,如果开发人员只使用一种编程语言编程,得到的结果往往不会理想。本章介绍多种编程语言在语言环境中的使用,并将使用多种编程语言看成是完成应用程序设计的必备条件。设计应用程序时,在了解了语言环境之后,就可以进行下一步的工作,即确定可以使用的资源。即便是自己一个人工作,也需要了解所拥有的语言资源,因为大多数开发人员不能完全掌握所使用的全部语言的各个方面。开发人员也许决定学习某一新开发的技术,以便使用某种特殊语言;也许仍将采用并非最佳的语言环境,以便继续使用已掌握得很好的语言。在团队环境中,定义可用资源非常重要,因为在设计一个项目之前,需要知道每位成员能做什么。

3、本章介绍收集各种工具,然后将它们汇总以在应用程序设计和开发中使用的过程。1.1 设计战略元素的定义当人们开始某一项目时,他们很自然地会说希望完成某一具体的任务,但此时他们不知道如何去完成,只是计划要完成它。当定义一个语言环境时,首先需要考虑希望完成什么样的工作。在许多情况下,需要考虑完成自己的目标过程中采用的基本步骤。例如,也许希望编写一个应用程序,该应用程序要从Web服务中检索数据、对数据进行一些分析,再将分析结果显示给用户,这些任务构成了应用程序的设计战略元素。开发人员选择编程语言时有可能不知所措。当与主要用Visual Basic编程的人交谈时,他通常会告诉你C#的各种缺陷。同样,专门使

4、用C#的开发人员通常也会容易地找到Visual Basic的瑕疵。既掌握C#又掌握Visual Basic的开发人员则会说出这两种语言各自的优缺点,并认为你可以用任一种语言来开发大多数的应用程序。但是,有些语言确实提供了不同于常用编程语言的特殊功能。例如,可以用F#(后面将介绍这一新的Microsoft语言)来完成列表处理、模式匹配以及其他形式的分析,甚至可以方便地将C#或Visual Basic与F#相组合,以便在一个应用程序中获得两种语言的最佳效果。当读者学习本章前面部分介绍的示例应用程序时,可以使用如下所示的工具。 使用C#语言从Web服务获得数据。 使用F#语言处理数据。 使用C#语言

5、向用户显示数据。使用F#语言处理数据这一点说明采用多种语言并不只是说说而已。通过采用多种语言,可以使应用程序的开发尽可能简单。在许多情况下,某一语言的优点足可以抵消由于采用多种语言而引起的复杂性。提示:不要认为团队中的开发人员只能使用一两种语言。开发人员之所以使用某种语言,也许只是说明公司雇佣该开发人员来使用此语言。许多开发人员能够使用多种语言。例如,虽然笔者主要使用Visual Basic和C,但也能使用汇编语言以及ROM Basic、LISP和Prolog,通常还使用PHP、Java以及C+。但是,如果人们没有向笔者询问所掌握的编程语言数量的话,他们会认为笔者主要只掌握Visual Bas

6、ic和C两种语言。当然,在自己的开发团队中,需要有人能够用F#来编写分析方面的应用程序,但由于所使用的语言产品的原因,有可能发现所有开发人员只会使用C和Visual Basic。在这种情况下,最佳语言环境是不使用F#。但在规划过程的初期,仍应该考虑用最佳的语言来完成工作。即使已经有了团队,也需要考虑团队中各开发人员的实际情况。你肯定不希望出现这样的情况,当创建应用程序时,一半的团队成员要等待另一半成员的工作。某应用程序开发可能需要用C#来编写底层代码,而用户则要在Visual Basic中显示元素。通过合理的规划,在开发过程中,可以使每一个子团队用最适合的语言来完成应用程序的对应部分。1.2

7、C#语言本书主要介绍利用C#语言来开发各种类型的应用程序,特别是以C#为主语言的应用程序的设计。C#语言可以用于很多场合。例如,当开发使用本机代码和托管库的组合应用程序时,C#可能是Microsoft提供的实现此目的的最佳语言。C#的Platform Invoke(P/Invoke)功能要比其他Microsoft语言的功能强大。但是,C#并不是非常完善的语言,因此读者需要了解它的不足之处,并应考虑用其他语言来弥补这些不足。下面介绍C#语言的优缺点。1.2.1 C#语言的优点C#与Visual Basic .NET在许多方面非常相似,两者均包含了我们所期待的公共编码元素,用它们能够创建条件语句、

8、循环、结构、类以及在用这两种语言开发的应用程序中出现的所有其他公共元素。这两种语言的语法略有不同这一事实并不是人们主要关心的问题,但C#确实有一些Visual Basic .NET不具备的优势,这些优势也是用户决定用C#作为主编程语言的主要原因。下面介绍C#的这些优势,并介绍在定义自己的语言环境时,为什么要考虑使用它们。1. 与C/C+相似的语法对大多数机构来说,未来的开发是某些类型的托管代码。与像C+这样的本机代码语言相比,.NET Framework具有很大的优势。例如,使用托管应用程序意味着开发人员不再需要担心托管需要的内存分配问题,因为垃圾回收机制会为开发人员处理这一要求。由于市场上有

9、靠内存错误来运行的大量病毒软件和各种垃圾软件,因此需要这种内存自动分配管理机制。但是,大多数机构不能简单地将它们的所有本机代码转换成托管代码,因此,有可能需要长时间地在库中使用C+代码。由于C#和C/C+的语法有很多共同之处,因此,C/C+开发人员可以方便地根据需要在C#和C/C+之间进行迁移。迁移并不是没有问题,但出现的问题要比迁移到其他语言时少得多。一天用C#编写代码,另一天用C/C+编写代码相对要容易一些。提示:虽然可以用C+创建托管代码,但大多数开发人员认为这一过程非常困难。与其他.NET语言不一样的是,C+需要一些不合理的编码过程。大多数开发人员在创建托管应用程序时,偏爱使用C#。需

10、要说明的是,在C#中用于界定代码块的大括号式的结构也在一些其他语言中使用,如Java和JavaScript。事实上,这些语言有很高的相似性,因此,与学习采用其他构建技术的语言(如Visual Basic)相比,C#开发人员能够相对容易地学习Java或JavaScript。C#和Java设计者均希望改进在C+中遇到的一些主要问题。以下是C#和Java共有的主要特点,这些特点能够帮助用户创建比使用C+语言更好的语言环境(可通过网址http:/www.softsteel.co.uk/tutorials/cSharp/lesson2.html和 2005/01/26/360879.aspx了解其他方面

11、的比较)。 C#和Java两种语言均编译成在托管环境中运行的与机器无关的字节代码。虽然.NET Framework目前主要运行于Windows,但也可以在其他平台运行C# Intermediate Language(IL,中间语言)代码,如使用其他环境(如Mono,见http:/www.mono- 出现内存错误的概率很小,因为两种语言通过垃圾回收机制管理内存。 能够利用反射浏览用任一种语言创建的应用程序的内部工作过程。 应用程序的代码较少,因为两种语言均需要使用头文件。 通过使用类使工作变得轻松,因为类适用于打包或汇编。此外,不需要考虑类在应用程序中出现的顺序。类起源于对象,而且要通过堆用关键

12、字new分配它们。 可以方便地实现线程同步,即提供超级线程同步。 一个类可以包含另一个类,以提供内部类。 通过避免采用全局变量(而是使每一个变量是类的一部分),可以避免某些潜在的运行时错误。此外,两种语言提供了对数组和字符串的跳跃检测,从而可以避免过去出现过的病毒开发者利用某些类型的应用程序漏洞这样的问题。 两种语言通过操作符“.”来分离对象元素,不再需要考虑是使用运算符“:”,还是使用运算符“-”。 两种语言对关键字null和boolean/bool提供了全面的支持。 托管环境会在使用所有的值之前自动初始化它们,因此在C+中不会出现意外值。 所有条件语句执行布尔比较,而不是直接采用integ

13、er值。 Try程序块提供对Finally语句的支持。该语句允许完成清除操作,即使代码顺序有误也会执行清除,从而避免内存和状态方面的问题。前面介绍的特点并不是对C#、Java和C+的全面比较,但它确实说明了在为自己的应用程序定义语言环境时需要考虑的问题。读者会看到,尽管C+有不足之处,但仍是在某些情形下应选择的语言。重要的是要了解每种语言的缺陷,因为这样做有助于选择正确的语言。2. 不安全代码功能公共语言运行时(Common Language Runtime,CLR)要不断监控托管应用程序所做的一切。CLR将托管代码看成安全代码,因为不能完成诸如像在C/C+中那样将所有指针加在一起或完成其他形

14、式的指针算法这样的工作。过去,使用指针会导致各种各样的问题,其中包括内存破坏。因此,现在的应用程序一般不直接处理指针。事实上,在.NET应用程序中不能直接处理指针,因为垃圾回收器会不断改变指针地址(这也就是当执行P/Invoke调用时,必须锁定和解锁IntPtr托管指针的原因)。但是,在设计自己的应用程序时,仍需要考虑大量的本机代码应用程序。也许需要直接访问Windows来完成某些任务,或者是要使用以前的需要处理指针的DLL。在遇到这种情况时有两种选择,一种选择是将所需要的代码打包到C+ DLL,并利用P/Invoke以不需要使用不安全代码的方式使它对应用程序有效。第二种选择是直接使用以前的代

15、码,并将指针放入不安全程序块中。C+是有限的托管语言之一,它允许使用不安全代码程序块。可通过网址http:/www.csharp-3. 深入调试一般来说,对于相同的应用程序,用C#调试器调试时得到的信息要比用Visual Basic调试器调试得到的信息多。本节基于Microsoft调试器来评价C#。如果读者使用的是第三方产品,它所提供的功能可能比Microsoft产品的功能多或者少。有些处理过程在Visual Basic中和在C#中是相同的循环仍然是循环。但是,当处理相同复杂开发的问题时,它们之间是有区别的。例如,在C#中,语言集成查询(Language Integrated Query,LI

16、NQ)调用总会显示当创建查询结果时使用的每一处理步骤。有些情况下,Visual Basic会简化此过程,只显示某些步骤,从而使得用LINQ语句诊断问题较为困难。提示:当然,问题是:是否总是需要C#提供的全部功能?其答案取决于应用程序本身。随着应用程序复杂程度的增加以及更高级的语言特征的使用,对提供详细信息的调试器的要求也会提高。不同于其他语言的调试差异也会在其他需求中显示出来。C#通常可以方便地向下钻取到对象的任何层,这种可访问性意味着可以用较少的时间来配置对象实际所包含的内容。在某些情况下,其他语言需要用较多的时间来确定对象所包含的内容,特别是当对象驻留在另一对象中时更为如此。4. 额外的I

17、ntelliSense功能在创建自己的应用程序时,可以在C#中用3个注释符号/来创建文档块。通过该文档块可以了解各种应用程序元素(如类和函数)方面的信息。Visual Basic .NET 2008用符号来添加此特征。添加这些特殊代码块后,可以通过设置编译器来创建包含应用程序方面的详细信息的可扩展标记语言(eXtensible Markup Language,XML)文件。但是,C#仍然对这些特殊的XML文件提供了IntelliSense高级支持,即C#对所编写的代码提供了更好的IntelliSense支持。注意:C#还提供了多行注释,此特征与C+相同。如果希望为Visual Basic创建多

18、行注释,各注释行必须各自是单独的一行。5. 编码添加C#支持一些编码添加在其他托管开发语言中不需要这样的功能。编码添加的更有用的功能之一是强迭代器支持,其中包括对关键字yield的支持。当应用程序迭代集合时,关键字yield有助于开发人员控制如何根据需要开始迭代和结束迭代。利用匿名方法,可以创建出运行速度更快且所需代码较少的应用程序。从字面上讲,匿名方法就是没有名称的方法。匿名方法出现在普通方法引用的位置。匿名方法还可以使代码的调试更为容易,因为代码出现在开发人员调试时容易看到的位置。有时希望将接口定义放在多个文件中,与其他.NET语言不同的是,C#允许关键字partial与下面的词一起使用。

19、 Class。 struct。 interface。 方法名。有时希望使类代码有效,但不需要开发人员创建该类的实例。C#支持用于此目的的静态类。例如,某数学类可能没有要维护的任何属性或状态信息,此时就可以采用静态类。对于这样的情况,类的所有成员也是静态的,即可以直接访问它们(Visual Basic的模块就具有这样的特征)。C#中的某些编码得到了细化。例如,C#用运算符“=”表示赋值,用运算符“=”表示比较。通过用不同的符号表示不同的目的,使得符号在代码中的作用更加清晰,并可以避免发生误解。6. 开发人员心理占有率曾经大多数开发人员都知道Visual Basic在他们所了解的语言中占据令人惊奇

20、的领导地位,但C#在开发人员中的心理占有率似乎正在提高,而且有可能取代Visual Basic。据Visual Studio杂志的调查( editorialsid=2333)显示,在所调查的开发人员中,41%的人现在使用C#,34%的人使用Visual Basic。当然,这只是一次调查,但其他事实也可以说明这一点。例如,Microsoft通常用C#来为新技术提供示例,而不是像过去那样采用Visual Basic。对于本书而言,是C#还是Visual Basic位于开发人员心理占有率的主要位置并不重要,重要的是使用C#意味着当就某一项目寻找开发人员时,可以发现使用C#或Visual Basic要

21、比使用其他语言更容易找到开发人员。简言之,在实现项目所需要的特殊技能时,使用C#有很大的优势。假设市场上的许多新C#开发人员是从Visual Basic转来的,那么也许会发现受雇于某项目的C#开发人员也掌握Visual Basic,因此实际上是用一份工钱得到了两名开发人员。1.2.2 了解劣势每一种编程语言都有一些劣势。某语言强调满足某一需求的真正含义意味着该语言没有满足另一个需求。与Visual Basic相比,C#趋于提供较底层的功能,但底层程度不如C+。因此,C#趋向中间位置的编程,但读者可能会发现实际上需要另一种语言来得到所希望的结果。下面介绍C#的一些不足之处,当读者开始开发自己的语

22、言环境时应考虑这些不足。1. 代码可靠性问题当对某种语言采用不安全代码来增强功能时,也有可能会使开发人员创建不可靠的代码。使C#具有吸引力的底层功能如果使用不当也会成为危险的工具。开发人员在生产环境中使用指针之前,需要知道指针是如何工作的。只有当开发人员了解调试时所显示内容的含义时,C#提供的详细调试信息才会起作用。很可能某个出于好意的开发人员由于在C#中采用了错误的技术,因此创建了一个恐怖的定时炸弹。C#还假设开发人员精通其他领域。例如,Visual Basic要检验数学运算,并向开发人员提供会导致上溢或下溢错误的反馈。默认时,C#并不检验数字运算,因此,应用程序的运行速度要比对应的Visu

23、al Basic应用程序的运行速度快,但此特点只对有经验的人起作用。可以在应用程序中用checked和unchecked语法来克服C#的数字运算检验方面的不足。C#的另一个潜在的代码可靠性问题是它不能自动纠正变量名拼写错误。如果在Visual Basic中变量名使用的大小写不正确,集成开发环境(IDE)会自动将其更改为正确的大小写。因此,可以编写包含myVariable, Myvariable和MyVariable的C#应用程序,它们表示的是3个不同的变量。注意:Visual Basic有其自己的代码可靠性考虑,即强类型化是可选的。如果没有强类型化,应用程序会错误地处理数据,并使数据出现错误。

24、但在Visual Basic中,默认采用了强类型化。此外,将True转换为某一数值会生成1或1,其具体值取决于所使用的转换方式。2. 信息太多问题Visual Basic开发人员只能看到基本的信息。虽然Visual Basic开发人员可以有选择地显示这些信息,但默认设置是使编程环境简单。因此,当C#开发人员要花时间来浏览那些并不需要的项时,Visual Basic开发人员则能够快速找到所需要的项。例如,Visual Basic会在Solution Explorer中隐藏一些项目文件,并在编辑区域隐藏名称空间信息。Microsoft有用于简化界面的信息隐藏。信息隐藏更多出现在用户应用程序,如Of

25、fice中(Office中,不使用的菜单选项不会显示在视图中),但有趣的是,可以采用同样的方法来帮助开发人员。当然,信息隐藏也意味着当开发偶尔需要某项信息时,开发人员需要搜索此特殊项。因此,信息隐藏是一把双刃剑,它通常有助于开发人员的工作,但偶尔也会对开发人员起反作用。3. 编码复杂性问题任何人都会说当创建编程结构时,C#不像C+那样复杂,但我们知道,像Visual Basic这样的语言使得编码更容易。例如,在Visual Basic中创建委托要比在C#中创建委托简单得多,因为Visual Basic允许使用AddressOf MyObject.MyFunction访问委托函数。C#中缺少的主

26、要元素之一是可选参数。Visual Basic和C+均支持可选参数。由于C#中没有可选参数功能,因此用它创建Office应用程序就非常困难。此外,C#在属性方法中不支持变量,因此难以创建应用程序的某些类。Visual Basic提供了一个C#中没有的使用方便的项。在Visual Basic中,利用处理程序结构,可以将事件自动与事件处理程序关联。虽然这是一个小功能,但它确实提高了开发人员的效率,并能够在事件处理程序出现的同一位置看到事件关联。1.2.3 使用多种语言开发人们创建的大多数应用程序都使用一种语言,因为这样可以降低以后的升级成本,而且只采用一种语言也会使代码的管理更加容易。但是,团队也

27、许由许多开发人员组成,在这种情况下,使用各个开发人员自己熟悉的语言可以使开发过程更快。此外,有些语言确实提供了并不很健壮的功能。例如,虽然C#确实提供了有效的P/Invoke功能,但有时仍需要对本机代码模块采用C+。以下3种语言通常与C#一起使用。 Visual Basic .NET。 Visual C+。 F#。当然,可以与C#一起使用所希望的任一种语言。当有些开发人员需要与.NET功能相匹配的Python的灵活性时,会与C#一起使用IronPython(详见 View.aspx?ProjectName=IronPython)。下面介绍上述3种语言的特点。1. Visual Basic .N

28、ET有些机构看不起Visual Basic .NET语言,因为该语言的名称与以前的BASIC语言类似。这两种语言并没有很大的区别,但Visual Basic .NET具有很强的功能以及超常的开发性能。Visual Basic .NET通常隐藏了作为开发环境一部分且C#开发人员必须涉及的复杂性问题,这一事实表明可以用Visual Basic .NET以更快的速度创建代码。Visual Basic .NET还可以使编程人员不用考虑那些在使用C#时需要牢记在心的问题,如数值溢出问题。一种好的做法是,让水平不高的开发人员先使用Visual Basic .NET,以提高他们的开发经验。2. C+很容易认

29、为C+曾经经历过风光的日子,然后与COBOL和FORTRAN一起被扔入了垃圾箱。但非常有趣的是,现在一些公司正在寻找COBOL和FORTRAN程序员来维护以前为大型机编写的且目前仍在使用的大量代码。事实上,可以通过网址world. com/tech-bottom-line/archives/2008/08/calling_all_cob.html?source=NLC-DAILY&cgd=2008-08-07看到寻找COBOL程序员方面的信息。C+是一个较老的语言,但也是一个有效的语言,它能够在托管编程环境与Windows之间建立起一座桥梁。有些情况下,使用C

30、+几乎是强制性的。例如,如果有一个用于特殊设备的实时应用程序,如工厂自动化问题,C+几乎是应用程序开发计划中必不可少的部分。C#确实比大多数.NET语言能够更好地提供与底层代码一起工作的功能,但完成每一个底层要求有一定的困难。有时候,编码会变得非常乱,有许多不安全的代码段。用户也许需要使用C+,C+是用于完成底层编程任务的语言。3. F#在许多情况下,当今的应用程序需要以新的方式使用数据。例如,现在的大多数系统有多个处理器,但大多数编程语言都没有很好地利用这一功能。F#是一门新语言,它结合了其他功能语言(如ML:/wiki/ML_programmin

31、g_language,OCaml:http:/caml.inria.fr/,以及Haskell:/)。功能语言与像C#或Visual Basic .NET这样的命令式语言不一样,功能语言使用了等式。F#语言中,不能将值赋给F#标识符,标识符的值总保持不变。但是,可以通过一些方式与标识符交互来分析标识符,并从已有数据中推导出新的结果。希望使用F#的原因是因为它允许在系统中以非常高的效率使用多处理器。由于F#标识符从不会更改值,因此用哪一个处理器处理它无关紧要,也不需要担心状态信息。没有跟踪机制意味着F#应用程序的运行速度相当快。简言之,F#为应用程序开发

32、环境增添了不同于所使用的其他语言的新功能。读者可通过网站 Exploring-the-New-F-Language/了解F#。1.2.4 多平台由于公司的合并以及开发人员认识到需要寻找开放资源,多平台变得越来越普及。幸运的是,在使用Java和后端服务器(如IBM WebSphere)的同时,仍可以使用C#。虽然这些工具较为难找,但像Mainsoft(Visual MainWin制造商,见 index.aspx)这样的供应商可以实现在多平台环境中工作。可通过网址http:/www.devsource. com/c/a/Add-Ons/Mainsoft-ASPNET-AJAX-Linux/了解Vi

33、sual MainWin。幸运的是,在多平台环境中有很多选择。虽然Visual MainWin允许在平台间实现代码共享,但当对代码共享的需求很小而且对应用程序速度没有要求时,也可以采用Web服务或其他技术。供应商还提供了一些起桥接作用的工具,如在全交叉编译器解决方案和Web服务之间提供中间纽带的JNBridge(无论使用什么样的多平台解决方案,都会在一定程度上影响语言环境,因此在决策中应考虑到这一问题。即使是一个完整的解决方案,如Visual MainWin,也需要对机构中的部分开发人员做一些调整,以使他们适应该工具。当采用Web服务时,团队开发人员需要创建完全不同的应用程序。注意:有许多种多

34、平台解决方案,因此不要看到第一个解决方案就接受。例如,许多开发人员不知道可以在Web服务中运行COM+应用程序。通过本地访问COM+应用程序并采用Web服务实现远程访问,可以获得速度上的优势,甚至可以直接在COM+应用程序中运行C#应用程序,然后使对应的COM+应用程序作为Web服务来访问(相关技术见1.3 盘点工具读者可能在使用各种应用程序的时候已经收集了不少的工具。对大多数开发人员来说,他们缺乏的并不是工具,他们很可能已经有了许多工具。事实上,他们甚至可能不知道自己已经有了这些工具。由于所使用的工具会影响到语言环境,因此重要的是要选择正确的工具。例如,也许有两种设计工具,但其中的一种更适合

35、数据库应用程序,而另一种更适合于Web服务。如果创建的是数据库应用程序,则希望使用第一个工具。工具库中应包含所有可以使用的工具。在购买这些工具时,应按照应用程序任务将它们分类。但是,在开始一个新项目时,还应按照开发团队对工具分类。当两种工具都能够完成某具体应用程序的创建时,则需要选择对开发团队来说功能最佳的工具。当然,还应询问团队成员,了解他们对已有工具的使用经验。创建工具库时需要考虑一些重要的事宜,以下是创建工具库时需要考虑的问题。 是否有足够的工具使用许可? 团队成员是否熟悉工具的使用? 工具是否提供应用程序所需要的一切,或是否需要购买附加模块? 在公司中是否能找到替代工具? 工具是否能够

36、与开发环境有效地集成? 团队各成员是否由于对某工具的使用经验较少而不太情愿使用该工具? 如果掌握某工具的团队成员调离,是否能够找到对应的替代工具? 是否是最新工具,并附有补丁和服务包?1.4 收集资源大量的编程资源都来自于人。即便是以Internet上的某篇文章作为信息源,该文章也是人写的。在面对语言环境时,团队中的每一位成员都表示了最大的潜在变化源。事实上,应在语言环境中考虑以下3种潜在变化。 语言资源。 技能。 经验。某项目的人力资源进一步会受到偏见、对某特殊工具的偏爱以及希望项目标新立异方面的影响。下面简要介绍需要人们考虑的用作语言环境的资源。在本书的后面部分还将详细介绍这些内容。1.4

37、.1 团队语言资源库有4年计算机科学学位的人均会至少掌握一种语言。他们掌握的经验可能还不足以编写应用程序,但用户有语言经验这一事实表明他们已掌握了一些编程。经验可以减小学习语言的工作量,并有可能使团队成员在项目中使用该语言。院校中存在的唯一问题是它们的语言学习计划不一样,一所学校可能重点介绍Java,而另一所学校则重点介绍Visual Basic .NET,并不能根据一个人的学位来判断他所掌握的技能。自学者也会有很好的语言使用经验。最初通过VBA使用Office的人可能会改为使用Visual Basic,然后又从VBA改为T-SQL。某团队成员在对Web花费了许多时间后,他可能还会掌握Java

38、Script以及其他语言,以便设置个人Web网站。但是,只有建立了语言库后,才能发现这些技术。虽然某团队成员目前使用的是C#,但并不意味着他没有掌握其他编程语言的使用技能。为了对应用程序创建出最佳的设计,还必须知道某团队成员曾经使用过C+,且曾专门为其他公司创建过DLL。1.4.2 团队技能如果知道某团队成员掌握C#、C+以及Visual Basic,并略知T-SQL,这是一件很值得高兴的事情。但是,大多数语言非常复杂,因此很可能某人只精通某种语言的某一方面(如数据库设计),但不精通其他方面。因此,如果了解某团队成员曾编写过访问SQL Server数据库的代码,要比只知道该成员了解如何在C#中

39、编写程序好。团队成员拥有的每一个应用程序开发经验均会提高他们的技能。但是,技能总是集中在某一具体需求上,因此还需要知道应用程序要解决的问题。技能也是临时性的。如果团队成员不使用他所掌握的技能,其技能就会随时间消失。除了要确定某团队成员曾编写过访问SQL Server的代码外,还应知道该成员是在多长时间前编写此代码的。8年前编写过SQL Server代码的团队成员要比两周前完成相同任务的团队成员的技术熟练程度逊色许多。但需要说明的是,人们能够快速提高其技能,即使是8年前的经验,也比没有强。最后一个需要考虑的技能是学习环境。对于目前的应用程序需求而言,利用Office 95掌握的VBA编程技能就不

40、如利用Office 2007掌握的VBA编程技能用处大。对任何技能均有相同的情形。技能通常与具体的产品版本相匹配,这说明必须考虑自从团队成员掌握了某技能后该技能都有了哪些发展。例如,在Office 2007中,Microsoft Office Fluent User Interface (RibbonX)明显减少了对在Office 95中提供的技能的支持,因为许多过去的技术不再起作用。1.4.3 经验的意义除非团队成员们长期绑定,否则他们的开发经验并不相同。开发经验有助于确定团队成员对某一具体应用程序开发要求的了解,并有助于得到好的结果。开发经验包括如下几个方面。 语言。 项目类型。 项目规模。 单独的项目任务。 用于编写应用程序的工具。 个人或团队的工作。 经理人品和管理风格。 开发人员的人品和管理风格。 团队其他成员的技能。 项目的成功或失败。项目的所有这些方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论