[FxCop.设计规则]5. 避免命名空间中包含太少的类型

原创 2005年05月23日 21:54:00

5.     避免命名空间中包含太少的类型

原文引用:

Avoid namespaces with few types

TypeName:

AvoidNamespacesWithFewTypes

CheckId:

CA1020

Category:

Microsoft.Design

Message Level:

Warning

Certainty:

50%

Breaking Change:

Breaking


Cause: A namespace other than the global namespace contains fewer than five types.

Rule Description

Make sure that there is a logical organization to each of your namespaces, and that there is a valid reason for putting types in a sparsely populated namespace. Namespaces should contain types that are used together in most scenarios. When their applications are mutually exclusive, types should be located in separate namespaces. For example, the System.Web.UI namespace contains types that are used in Web applications, and the System.Windows.Forms namespace contains types that are used in Windows-based applications. Even though both namespaces have types that control aspects of the user interface, these types are not designed to be used in the same application, and are therefore located in separate namespaces. Careful namespace organization can also be helpful because it increases the discoverability of a feature. By examining the namespace hierarchy, library consumers should be able to locate the types that implement a feature.

Note: Design-time types and permissions should not be merged into other namespaces to comply with this guideline. These types belong in their own namespaces below your main namespace, and the namespaces should end in .Design and .Permissions, respectively.

How to Fix Violations

To fix a violation of this rule, try to combine namespaces that contain a small number of types into a single namespace.

When to Exclude Messages

It is safe to exclude a message from this rule when the namespace does not contain types that are used with the types in your other namespaces. It is also safe to exclude a violation if there are fewer than five types in the library.

 

 

引起的原因:

一个非全局命名空间包含少于5个类型。

描述:

确保你的每一个命名空间对应到一个逻辑结构;除非必要,否则不要把你的类型放在一个新的命名空间里。

一个命名空间应该包含一组经常被使用在同一个场景中的类型。当一组类型的使用场景是互斥的,他们应该被放在不同的命名空间中。例如:Web应用程序使用System.Web.UI命名空间中的类型,而Windows-based应用程序使用System.Windows.Forms命名空间中的类型。即使两个命名空间都包含UI控制方面的类型,这些类型不被设计为在同一个应用程序中使用,因此,他们仍然被放在不同的命名空间中。细致的命名空间结构同样很有帮助,它增加了用户发现库功能的能力,通过调查命名空间,库用户将能够定位一个实现的功能。

 

 

备注:设计时类型和许可相关的类型将不符合这条策略,它们将在主命名空间下面拥有它门自己的命名空间。并且分别以.Design.Permissions结尾。

修复:

如果需要修复这个问题,可以尝试将几个命名空间合并一个单独的命名空间中。

例外:

如果一个命名空间不包含任何与其它命名空间中的类型同时使用的类型,可以忽略这条消息。如果你的库只包含少于5个类型,这条规则也可以忽略。

学会如何使用LESS(二)----嵌套规则、运算、命名空间和作用域

学会如何使用LESS(二)----嵌套规则、运算、命名空间和作用域

Python 命名空间和LEGB规则

Python LEGB规则 命名空间

PHP命名空间的名称解析规则

名称解析遵循下列规则:   1、对完全限定名称的函数,类和常量的调用在编译时解析。例如 new \A\B 解析为类 A\B。   2、所有的非限定名称和限定名称(非完全限定名称)根据当前的导入规则...

Python命名空间——locals()函数和globals()函数及局部赋值规则

Python使用叫做命名空间的东西来记录变量的轨迹。命名空间只是一个 字典,它的键字就是变量名,字典的值就是那些变量的值。实际上,命名空间可以象Python的字典一样进行访问,一会我们就会看到。在一个...

JavaScript 命名空间规则

JavaScript 中有很多可以给你的对象安全分配命名空间的方法。这篇文章讨论我见过的普遍的实践。 前缀命名空间 如果命名空间的目的是避免冲突的话。下面这个系统,只要我们知道全局变量名前...
  • hj7jay
  • hj7jay
  • 2016年06月30日 10:18
  • 427

Python 命名空间 及变量搜索规则 属性名称 属性名称 无点号运算的变量名

无点号运算的变量名与作用域相对应 点号的属性名使用的是对象的命名空间 有些作用域会对对象的命名空间进行初始化(模块和类) 简单变量名:如果赋值就不是全局变量 无点号的简单变量名遵循函数的LEGB...

PHP命名空间解析规则(告别PHP namespace给你带来的纠结)

PHP 5.3加入命名空间特性之后,相信很多朋友在产品开发的中已经大量使用了,不过其解析规则反正是让我纠结了一下子,不注意就会被搞晕。 幸好在手册中发现这么一段代码,故手册中其他关于namesp...
  • sean_cd
  • sean_cd
  • 2012年11月06日 11:18
  • 3371

模式对象的命名规则和命名空间

一、 命名规则 参考ORACLE 11g Document Library 的官方文档: Basic names Basic names identify columns, tables, views...

Freemarker中的指令、数据类型、命名空间、内建函数

主要要记得各种指令的写法 1.if指令 test.ftl Hello ${user} 你的成绩是 优秀! 良好! 不及格! 测试类 import java.io.Fil...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[FxCop.设计规则]5. 避免命名空间中包含太少的类型
举报原因:
原因补充:

(最多只允许输入30个字)