C#泛型编程指导原则(一)

原创 2007年09月14日 13:27:00

Item1Use  Generic Collections 使用泛型集合

数据集合是泛型最典型的应用之一。在你现存的代码里,可能已经遍布了ArrayListHashTable。在使用泛型之前,你可能会在将要编写的代码中大量使用System.Collection这个数据结构。然而,自从有了泛型,真的是没有任何理由再继续使用这个命名空间中的集合了。

如果说仅仅有那么一个领域,泛型可以带来毫无疑问的价值的话,那么这个领域就是集合。如果没有泛型,非泛型集合的生产者和消费者将被迫把被包含的类型声明为Objet。当然了,这样做的话,你的代码将会有很多强制转换和一般的类型转换(将每个Object对象转换为其真实的类型),这将使代码变得很凌乱,同时也意味着对于值类型需要将其进行装箱才能表示为Object类型。即使在你努力的限制非泛型集合的影响的时候,一般你都会被迫进行对特定类型的包装,从而使类膨胀。出于这些原因和其他一些在使用中的体会,可以很明确的得知:没有任何理由倾向于这些老式的、非泛型的集合了。事实上,我想这样告诉大家:泛型集合是泛型最引人入胜的用处。如果你并没有被使用泛型集合的价值所说服的话,那么泛型所带来的任何其他好处也不能说服你。

尽管我认为使用泛型的观点是不得不接受的,但是并不是每个解决方案都具有用泛型集合完全取代与其相对应的非泛型集合的荣耀。如果你公开了一个API,并且有客户绑定了非泛型的API,你就需要考虑如何将API转换成泛型的。在这种情况下,在具体实现中,加入泛型集合到API中依然是值得的。

 

C#泛型编程指导原则(19--23)

Item 19: Use Static Data Members with Caution小心使用静态数据成员对于非泛型类来说,静态数据成员被所有该类的对象所共享。然而,对于泛型类型,静态数据成员是被...
  • MaybeHelios
  • MaybeHelios
  • 2007年09月14日 19:15
  • 1327

C#泛型编程指导原则(17--18)

Item 17: Avoid Multiple Constraint Ambiguity避免多重约束中的含糊当使用约束的时候,可以选择对任何一个类型参数使用多重约束。事实上,你可以将单独的类约束与多重...
  • MaybeHelios
  • MaybeHelios
  • 2007年09月14日 19:14
  • 858

C#泛型编程指导原则(二)

Item 2: Replace Objects with Type Parameters使用类型参数取代Object类型在使用泛型之前,程序员一般都依赖于Object类型来获得通用性。如果有这样一个类...
  • MaybeHelios
  • MaybeHelios
  • 2007年09月14日 13:28
  • 673

C#泛型编程指导原则(五)

Item 5: Genericize Types That Vary Only by a Data Type将由数据类型引起变化的类型泛型化如果你通读以下自己代码中现存的类、方法、接口、委托,你会发现...
  • MaybeHelios
  • MaybeHelios
  • 2007年09月14日 13:53
  • 743

C#泛型编程指导原则(15--16)

Item 15: Select the Least Restrictive Constraints选择最少限制的约束在给类型参数选择约束条件的时候,最好只加入最少的限制,不要加入不必要的附加限制。下面...
  • MaybeHelios
  • MaybeHelios
  • 2007年09月14日 19:13
  • 659

C#泛型编程指导原则(12--14)

Item 12: Custom Collections Should Extend Collection自定义集合应当扩展自Collection在一些时候,你很希望引入自己定义的泛型集合。典型来讲,自...
  • MaybeHelios
  • MaybeHelios
  • 2007年09月14日 19:11
  • 677

C#泛型编程指导原则(六、七)

Item 6: Use Expressive, Consistent Type Parameter Names使用富有表现力的、前后一致的类型参数名称对于该问题,有两大基本阵营。一方认为“单个字母”的...
  • MaybeHelios
  • MaybeHelios
  • 2007年09月14日 14:06
  • 565

C#泛型编程指导原则(三、四)

Item 3: Replace System.Type with Type Parameters用类型参数取代System.Type在一些情况下,你可能在方法的签名中使用过System.Type引用,...
  • MaybeHelios
  • MaybeHelios
  • 2007年09月14日 13:30
  • 578

C#泛型编程指导原则(十、十一)

Item 10: Prefer Type Inference with Generic Methods优先使用泛型方法的类型推测泛型方法的最帅的特性就是推测参数类型的能力,该特性可以消除为每个对泛型方...
  • MaybeHelios
  • MaybeHelios
  • 2007年09月14日 19:10
  • 577

最重要的设计指导原则

作者:Scott Meyers“设计”这项工作包括很多东西,不过当然最重要的方面之一是接口规范。接口决定了一个组件的哪些方面对哪些人是可以查阅的;它们因此决定了封装。 接口指名什么功能(数据,属性,方...
  • Melody_1208
  • Melody_1208
  • 2007年10月14日 16:36
  • 588
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#泛型编程指导原则(一)
举报原因:
原因补充:

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