WEB开发网
开发学院软件开发C语言 Effective C# 原则33:限制类型的访问 阅读

Effective C# 原则33:限制类型的访问

 2009-02-19 08:16:01 来源:WEB开发网   
核心提示:并不是所有的人都须要知道所有的事,也不是所有的类型须要是公共的,Effective C# 原则33:限制类型的访问,对于每个类型,在满足功能的情况下,应该通过尝试在类上实现公共接口来减少可见内容,你应该可以在.Net框架库里发现使用Enumerator模式的例子,应该尽可能的限制访问级别,而且这些访问级别往往比你想像的

并不是所有的人都须要知道所有的事。也不是所有的类型须要是公共的。对于每个类型,在满足功能的情况下,应该尽可能的限制访问级别。而且这些访问级别往往比你想像的要少得多。在一个私有类型上,所有的用户都可以通过一个公共的接口来访问这个接口所定义的功能。

让我们回到最根本的情况上来:强大的工具和懒惰的开发人员。VS.net对于他们来说是一个伟大的高产工具。我用VS.net或者C# Builder轻松的开发我所有的项目,因为它让我更快的完成任务。其中一个加强的高产工具就是让你只用点两下按钮,一个类就创建了,当然如果这正是我想要的话。VS.net为我们创建的类就是这样的:

public class Class2
{
 public Class2()
 {
  //
  // TODO: Add constructor logic here
  //
 }
}

这是一个公共类,它在每个使用我的程序集的代码块上都是可见的。这样的可见级别太高了,很多独立存在的类都应该是内部(internal)的。你可以通过在已经存在的类里嵌套一个受保护的或者私有的类来限制访问。 越低的访问级别,对于今后的更新整个系统的可能性就越少。越少的地方可以访问到类型,在更新时就越少的地方要修改。

只暴露须要暴露的内容,应该通过尝试在类上实现公共接口来减少可见内容。你应该可以在.Net框架库里发现使用Enumerator模式的例子,System.ArrayList包含一个私有类,ArrayListEnumerator, 而就是它只实现了IEnumerator接口:

// Example, not complete source
public class ArrayList: IEnumerable
{
 private class ArraylistEnumerator : IEnumerator
 {
  // Contains specific implementation of
  // MoveNext( ), Reset( ), and Current.
 }
 public IEnumerator GetEnumerator()
 {
  return new ArrayListEnumerator( this );
 }
// other ArrayList members.
}

1 2 3  下一页

Tags:Effective 原则 限制

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接