- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
极限编程-规划你的C Sharp程序
1 章 规划你的C#程序
阅读目标
树立模块化分的思想
理解程序集、解决方案、项目、命名空间的含义
学会利用Visual Studio 2005 创建C#项目
1.1 程序需要规划
我并不希望本书的第一个C#程序偷懒地从HelloWorld 开始。HelloWorld 程序确实能够
以最简单的程序结构展现一门语言的特色,然而编程语言语法的掌握,并不能使你成为一
名优秀的程序员。程序需要规划,就好似一座城市需要规划一样,其重要性是不言而喻的。
面向对象思想尤其重视对于程序的规划,表现在软件术语上,就是对模块 (Module )
或者说包(Package )的划分。
C#编程极限
让我们引入“隐喻”来加深对模块划分的理解。我们可以想象一下小孩搭积木的游戏。
依照小孩天真的想象,一大堆积木在他们手中最后被堆砌成各式各样的建筑。如果结果不
满他们的意,淘气的小手会断然将他们苦心经营的杰作推倒,重新变化成新的模样。小孩
子们常常为之乐此不疲,至少对于搭建积木而言,他们每一个人都是优秀的建筑师。
为何搭建积木是如此的容易?原因就在于每一个积木块之间不存在太多的依赖关系。
我们可以将A 积木搭建在B 积木和C 积木之上,然而为了改变他们的形状,彼此交换一下
位置也未尝不可。因此,在这样一个没有约束的活动空间里,小孩子最容易发挥他们天马
行空般的想象力,无拘无束地搭建自己梦想的舞台。
与之相反的是拼图游戏。每一块拼图的形状、图案看似没有内在的联系;然而,一个
小小的弧度弯曲,细微的色泽变化,可能都会制约每块拼图的实际位置。也即是说,每一
块拼图之间都存在着非常强的依赖关系,拼图的组合是固定不变的。
回到软件设计上来,你愿意采用搭积木的方式,还是拼图的方式完成程序的规划?答
案自然不言而喻。因此,规划程序的要点,就在于划分后的模块之间依赖关系的多寡。理
想的状态是不存在任何依赖关系,就好似积木那样,可以被任意组合。软件设计显然没有
搭建积木那么简单,然而若能做到模块间的依赖关系尽可能少,程序员受到的约束就会减
少。一旦客户改变需求,我们能够自如地应对;即使推倒之前的设计,我们也可以快速地
重头再来。
我们必须从程序设计之初就要建立起模块划分的概念。软件设计在于“分”,“分而
之”则是软件设计的解决之道。
合理地划分软件模块,需要有 “庖丁解牛”的高超技艺,这种技艺必须经过千百次实
践,才能从经验中萃取。然而,设计思想如果在一开始就能够正确地建立,却能够取得事
半功倍之效。所以,规划你的C#程序,首先就应该从划分模块开始。
1.2 .NET 中的程序集
在.NET 中,程序集 (Assembly )基本上相当于软件设计中模块或包的概念。如果一个
软件设计合理,往往是由多个程序集构成,除非这个软件足够小,以至于简单至一个程序
集就可以实现它的所有功能。程序集体现在物理意义上,则是一个个被编译过的文件,扩
2
1 章 规划你的C#程序
展名为.dll 或者.exe 。
DLL 是Dynamic Link Library 的缩写,译为动态链接库,在.NET 中,我们常常将dll
文件称为库 (Library )文件。此时的程序集文件,就好比一个装满 螺丝刀、钉锤、直尺、
圆规的工具箱,供给调用者使用。dll 文件不能被直接执行,因此它通常被搭建为积木建筑
的底层,作为服务的提供者供给上层模块享用。在.NET 中,一个dll 文件若要被另外的程
序集文件调用,需要在该程序集中添加对dll 文件的引用。一个引用的添加,实质上就代表
这两个程序集之间存在依赖关系。或者是A 依赖于B,或者是B 依赖于A 。如果A 程序集
与B 程序集互相依赖,就会导致程序集的循环引用,这说明这样的设计是不合理的,我们
可以抽取互相依赖的这部分内容,独立为专门的程序集。
举例来说,假定我们已经设计完成一个同时提供xml 文件 作以及数据库 作的程序
集文件 Common.dll ,之后根据需求,我们又设计 一个针对配置文件 作的程序集
Configuration.dll 。由于配置文件是xml 文件,因此该程序集需要添加对Common.dll 程序集
文件的引用。然而,Common.dll 程序集包含的数据库 作部分,又同时需要调用
Configuration.dll 程序集,以读
文档评论(0)