.NET 设计规范--.NET约定、惯用法与模式--8.使用规范

  这里就如何在公用API中使用常用类型提供提供一些规范。

  8.1数组

  要在公用API中优先使用集合,而不是优先使用数组。

  不要使用只读的数组字段。虽然字段本身是只读的,用户不能对其进行修改,但对用户可以修改数组中的元素

  有两种方法可以避免使用只读的数组字段,一种是使用只读的集合,另一种是在返回数组之前对其进行复制

  考虑使用不规则数组(jagged array),而不是要使用多维数组

  //jagged arrays

  int [][] jaggedArray={

  new int[]{1,2,3,4},

  new int[]{5,6,7},

  new int[]{8},

  new int[]{9}

  };

  //multidimension arrays

  int [,] multidmensional arrays

  {

  {1,2,3,4},

  {5,6,70},

  {8,0,0,0},

  {9,0,0,0}

}

8.2 attribute

  System.Attribute 是个基类,用户可以用它来定制自己的attribute。

  当使用attribute时,有一些属性是必须由用户指定。用于这些属性通过构造函数中的必填参数来表示,因此称为必填属性(required property)或必填参数(required argument)。

  当使用attribute时,不是必须指定的那些属性称为可选属性(optional property)或可选参数(optional argument),它们通过可设置的属性来表示。

  要在命名自定义attribute类时添加"Attribute"后缀

  要在定义自己的attribute时使用AttriubteUsageAttribute

  要为可选参数提供可设置的属性

  要为必填参数提供自读属性

  要提供工作函数参数来对必填参数进行初始。每个参数名应该与相应的属性名相同

  避免提供构造函数参数来对于可选参数对应的属性进行初始

  避免对自定义attribute的构造函数进行重载

  要尽可能将自定义attribute类密封起来。这样会使查找attribute更快

8.3 集合

  为了对一组有共同特征的对象进行操作而特别设计的任何类型,都可以称为集合(Collection)。

  不要在公有API中使用弱类型集合,如果返回值和参数表示一个集合元素,那么其类型应该与元素类型完全一致,而不应该使元素类型的任何基类。

  不要在公有API中使用ArrayList或List<T>

  不要在公有API中使用Hashtable或Dictionary<TKey,TValue>

  不要使用IEnumberator<T>、IEnumreator或实现了这两个接口之一的任何其他类型,触发是作为GetEnumerator方法的返回值。

posted on 2012-04-17 09:53  lufangtao  阅读(307)  评论(0编辑  收藏  举报

导航