使.NET命名空间符合标准

标准|命名空间

命名空间可以帮你组织企业的.NET源代码,但要做到这一点,必须要有可靠的计划。
by Jonathan Goodyear, MCSD, MCP, CLS
还记得在COM中为企业组织源代码有多难吗?典型情况下,你在命名时只可以用两个级别(level):项目名称和类名称。你的ProgID通常是以下面的形式显示的: XYZCompanyAccounting.Payroll

显然,这种方法并不理想。如果可以更细地划分命名空间标识符就更好了。例如,在.NET中,ProgID可以表示成: XYZCompany.Accounting.Payroll

在这个例子中,两者的差别并不大,但当你在定义层次更多的项目时,它们的差别就会很明显了。

实际上,.NET Framework可以让你创建更深层嵌套的命名空间,这种功能会使编程工作更顺利(或更糟)。要运用深层嵌套的命名空间需要我们更仔细地做计划,并需要企业各开发小组的配合。本文提供了一些有用的建议,讲述了如何以命名空间的形式来组织源代码,以及如何在Visual SourceSafe(VSS)项目中组织企业的.NET源代码。

构建你的命名空间
作为出发点,你为一个源代码单元分配的每个命名空间都应该以公司标识符开头,这是很有用的。例如,在前面的例子中,我是以“XYZCompany”开头的。命名空间的下一部分取决于代码的目的范围。如果你的代码是包含商业逻辑的一个特定项目,那么命名空间的下一部分就应该是你的项目的名称(例子中的“Accounting”)。接下来是细分你的项目(例子中的“Payroll”)。因此,你的特定项目的命名空间就应该是: XYZCompany.Accounting.Payroll

然后,你可以在XYZCompany.Accounting.Payroll命名空间中为手头更具体的任务来定制类。通过在更细的基础上划分商业逻辑命名空间,你就可以在VSS中将代码分成更具体的项目单元(我在后面会更详细地对此加以讲述)。

ASP.NET Web项目和Web services项目是特定项目命名空间的特殊的例子。对于ASP.NET Web项目来说,一个很好的命名标准就是CompanyName.ProjectName.Website。同样,Web services项目的一个很好的命名标准就是CompanyName.ProjectName.WebServices。

根据该语法,用于XYZCompany的帐目网站和Web services的命名空间就会是: XYZCompany.Accounting.Website
XYZCompany.Accounting.WebServices

你运用的命名空间方案可以根据源代码的目的范围改变。如果你打算让代码跨企业共享,那么在命名空间中就不要放项目的名称。我还建议你不要创建自己的命名标准。作为替代,你应该遵循Microsoft已经为.NET Framework建立的标准。例如,如果XYZCompany的开发人员要构建一个企业类库来将数据访问封装到SQL Server中,那么他们应该用下面的命名空间: XYZCompany.Data.SqlClient

该命名空间模拟了.NET Framework中的System.Data.SqlClient命名空间结构。同样,如果XYZCompany的开发人员要构建一个类库来封装他们自定义的事件日志(event logging),那么下面的命名空间就会很适合: XYZCompany.Diagnostics

在你的命名空间中创建唯一的类名总是很好的。通过这种方法,当有必要让你的代码同时运用.NET Framework命名空间和特定企业的命名空间时,就不会出现类名冲突的现象。例如,你应该将自定义的事件日志类命名为EventLogger或XYZEventLog,而不是EventLog。我更喜欢用前面提到的建议,因为在一个完全形式的(fully-qualified)类名中不只一次地列出公司名称会很啰唆。

出于几个原因,以这种格式构建你的命名空间是很重要的。首先,通过建立一个公司名形式的根命名空间,我们在以后购买第三方产品时就避免了可能出现的命名空间冲突现象。第二,通过采用与.NET Framework一样的命名空间结构,你就可以让开发人员更容易地在企业底层架构中找到为他们所需要的功能提供了支持的类。Microsoft的类编目系统可能并不完善,但是让开发人员去学习另外一个特定于你的企业的编目系统并没有意义。第三,通过为企业构建命名空间层次,你就可以很容易地用一个文件生成工具(如NDoc)为整个类库编译一个单独的MSDN形式的文件了。

构建你的项目
在构建好命名空间格式后,我们就可以考虑如何在VSS中构建项目了。我建议在你的VSS树状目录结构的顶层中运用两个项目节点: XYZ Enterprise .NET Class Library
XYZ Project .NET Class Library

图1. 命名你的项目节点
这两个项目节点可以让你创建两个单独的文件(一个用于特定项目代码,另一个用于企业代码)。在每个顶层节点下,以公司名的形式创建一个项目节点(本例中的XYZCompany)。这就是你的根命名空间。至于VSS项目树状目录结构的其它部分,我们可以复制你已经创建的命名空间结构,用文件夹来替代命名空间中的圆点(.),这同Java中各层次的类的显示形式是类似的:在代码中以圆点显示、在CLASSPATH系统环境变量中用文件夹显示(见图1)。记住,我们总是需要用完全形式的、完整的命名空间名称来命名你的项目文件。

提到命名标准,我建议你遵循Microsoft已经建立的一些类名后缀。例如,属性类都应该是以单词“Attribute”结尾的,异常类都应该以“Exception”结尾。这就是说,你在决定为准备构建的类命名时,先要确定它属于哪种类型的类,并查看.NET Framework类库,看看是否已经有命名标准了。如果有,就遵循该命名标准。

我所讲述的命名空间结构只是为了帮你组织企业的.NET源代码。对于大多数公司来说,.NET还是项很新的技术,所以现在运用一个组织好的编目系统正是时候。通过本文,我们就会意识到为你的命名空间建立一个标准的命名结构的重要性。否则,你的.NET代码就会是个混乱的、深层嵌套的ProgID代码库,你在运用它时,就会很费劲。

时间: 2024-08-08 02:06:47

使.NET命名空间符合标准的相关文章

Dreamweaver 8来构建符合标准的Web站点

dreamweaver|web|标准|站点 译者序:这个系列原文一共8篇文章,从普及 Web Standards 入手,讲述如何用 Dreamweaver 8 来构建符合标准的 Web ,由于原作者的此篇文章是对<Build Your Own Standards Compliant Website Using Dreamweaver 8 >(这篇文章是收费的)的摘录,所以我对内容进行了适当的删改,顺序与原文是一致的,但篇幅会有调整,特此告知.翻译水平有限,敬请谅解. 如果您正在读这篇文章,您很

Semantics:Html/Xhtml是否真正符合标准

原文:http://jorux.com/archives/what-is-semantics/ Semantics可翻译为语义的(学),它是Html/Xhtml是否真正符合标准的重要一环.Jorux在这和大家讨论一些自己的观点,如有不妥之处,还请各位网友指正.在西方,为什么这么多人如此重视网页的Semantics,也许你会说,西方比较守规矩,重视标准,但我想说的是,在这些表象的背后有着"一只无形的手"控制着. 在此,举个导航条的例子来说明我的观点.大家应该看见过很多诸如下类的导航结构:

Html/Xhtml是否真正符合标准

 Semantics可翻译为语义的(学),它是Html/Xhtml是否真正符合标准的重要一环.Jorux在这和大家讨论一些自己的观点,如有不妥之处,还请各位网友指正.在西方,为什么这么多人如此重视网页的Semantics,也许你会说,西方比较守规矩,重视标准,但我想说的是,在这些表象的背后有着"一只无形的手"控制着. 在此,举个导航条的例子来说明我的观点.大家应该看见过很多诸如下类的导航结构: 首页 | 关于 | 博客 | 留言 | 相册 它们有着共同的特点,都有分割条"|&

《C专家编程》一1.6 它很棒,但它符合标准吗

1.6 它很棒,但它符合标准吗 不要添乱--立即解散ISO工作小组. --匿名人士 ANSI C标准可以说是非常独特的,我们可以从好几个有趣的方面来说明这一点.它定义了下面一些术语,用于描述某种编译器的特点.如果你对这些术语有一个比较好的了解,就有助于你理解什么东西能被语言接受,什么东西不能被语言接受.前两个术语涉及不可移植的代码(unportable code),接下来的两个术语跟坏代码(bad code)有关,而最后两个术语则跟可移植的代码(portable code)有关. 不可移植的代码

本地检验网页是否符合标准的几种方法

标准|网页  检验网页的代码是否符合标准除了在W3C在线检验(需上传到服务器)以外,还可以在本地检验(不需上传),本文介绍的是几种在本地检验的方法.须注意的是,就算你的页面通过了检验,并不能说明页面就是符合WEB标准了. 静态网页A Real Validator主页地址:http://arealvalidator.com 使用比较麻烦. TopStylePro主页地址:http://www.bradsoft.com/ 教程:TopStyle Pro 使用技巧 UTF-8 编码的中文会乱码. Dr

符合标准的正常工作的对联广告

符合标准的正常工作的对联广告以下是HTML网页特效代码,点击运行按钮可查看效果: [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

DIV+CSS不一定符合标准_CSS/HTML

最近发现越多越多的人使用DIV+CSS这个称为来代表XHTML.这从根本上就是不正确的! 其一,CSS是一种叫做样式表(stylesheet)的技术.也有的人称之为层叠样式表(Cascading Stylesheet),而DIV是HTML中的一个标签.DIV和TABLE是同级的,所以不应该把DIV和CSS连在一起来代表XHTML. 其二,DIV+CSS并不一定就符合标准,XHTML而也并不只是DIV+CSS.许多号称已经使用DIV+CSS进行重构的网站或论坛其实本身根本无法通过W3.ORG的校验

《Web前端开发最佳实践》——第3章 标准的HTML代码3.1 验证代码是否符合标准

第3章 标准的HTML代码 标准的HTML代码指的是HTML代码符合W3C的最新标准,而在页面的HTML代码中包含有任何规范之外的或者是不推荐的标签和属性都是不符合标准的.W3C定义了所有规范的HTML标签及其属性,目前正式的版本是HTML5,HTML5中定义的大部分内容已经被所有的高级浏览器支持,所以并不妨碍在页面中使用这些已经广泛被支持的新标签和新属性.本章将贴近W3C标准,介绍如何构建标准的页面HTML代码. 3.1 验证代码是否符合标准 一个符合W3C标准的网页会有什么重要的意义呢?这是

海航回应:服务符合标准

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 海航回应:服务符合标准 本报讯 (记者李媛)近日,教育集团有限公司董事长 发微博吐槽海南航空服务差,引发网友关注.俞敏洪称:"早上去上海,买了张特价海南航空商务舱的机票,经济舱的价格,本来挺开心,结果到了机场,不让走商务通道,不让到休息室休息,办票的服务员一看是特价票马上冷若冰霜.最后发现海南航空卖特价票就是为了污辱人一下的."对此,海南航空通过