• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
多莱特~梦未醒,再出发

行路难,行路难,多歧路,今安在。

长风破浪会有时,直挂云帆济沧海。

博客园    首页    新随笔       管理     

学习.net设计规范记录

学习.net设计规范记录

 

1.不要在一个文档中包含1个以上的公用类型,除非不同之处仅在于泛型参数的数量。

2.要用相同的名字来命名源文件及其包含的公用类型。

3.要用相同的层次结构来组织文件目录和名字空间。

4.分组成员。

   

   

Event designer

2008年11月23日

10:53

要用 system.EventHandler<T> 来定义事件处理函数。

要使用EventArgs 的子类。

要使用受保护的虚函数来触发事件。

param : e;

EventHandler<some eventargs> handle = some event;

if(handle ! = null )handle(this,e);

   

   

类型设计

2008年11月25日

9:27

   

1.要确保,高内聚,一个类要可以用一句话来描述。

   

如果事情变得复杂了,那么就定义更多的类型。

   

   

成员设计

2008年11月25日

9:27

   

  1. 重载
    1. 要允许可选参数为Null;

         

  2. 属性和方法之间的选择
    1. 多使用属性控制方法的语义,使用较少的方法:可以减少方法重载的数量。
    2. 方法表示操作,属性表示数据,这个是设计的依据:要考虑使用的场景,如Article.HasComplelted 这个并不是 article的 attribute,所以要使用HasComplelted();
    3. 要使用属性,如果值保存在内存中,并且属性的目的就是访问这个值。
    4. 要使用方法,如果该操作的速度比直接访问字段慢很多:如果不止是单纯的获取值,还包含一定的处理,那么应该使用方法,因为有可能每次都返回一个内部对象的副本,那么如果设计为属性,就会效率很低,设计为方法就很好的表示了,有可能调用的时候要在本地保存这个副本。
    5. 基本原则就是:用属性来表示只涉及简单计算的简单数据。

         

  3. 属性设计
    1. 属性相比方法更智能,更灵活。
    2. 不要让,set的范围>get的范围。
    3. 要注意提供默认值。
    4. 要允许用户以任意顺序设置属性的值。即使会导致暂时的无效状态:这个情况是很常见的,设置属性的值的时候只是提供了基本的验证,必须提供某种形式的方法来显示地提交。所以不要让属性有设置的顺序。
    5. 避免在属性的获取方法中抛出异常。!!!属性的获取方法通常应该是简单的操作。
    6. 通常应该把属性的改变通知事件设计在高层的api中。

         

  4. 构造函数的设计。
    1. 要把构造函数的参数用作设置主属性的便捷方式。应该和无参的构造函数+后续设置属性 没有任何区别。:这个是为什么呢,只读属性怎么办,如果有一些不希望用户更改的怎么办。
    2. 在构造函数中尽量少做事儿,lazy load..
    3. 要从实例构造函数中抛出异常。

         

  5. 参数设计。
    1. 要使用类层次结构中,最接近基类的类型来作为参数。降低耦合性。减少调用类所需要掌握的信息量。
    2. Enum 和 boolean的选择。
      1. 要使用enum,如果方法中有2个以上的boolean。
      2. enum的扩展性要远远好于boolean,所以要多考虑扩展性。
      3. 如果一般是通过构造函数设置的,那么enum. 如果是通过属性设置的,那么可以使用boolean。

           

    3. 参数的验证
      1. 要在调用栈的底层(底层的api)验证,所有直接暴露给用户的成员都需要验证。
      2. 枚举要使用特定范围的验证。:因为枚举的值很可能是强制转换的,是无效的,必须对其验证,而且要使用特定范围的验证,这样可以更准确。

         

         

   

   

可见性设计

2008年12月12日

10:10

   

  • 类成员可具有五种已声明可访问性中的任何一种,默认为 private 已声明可访问性。(请注意,声明为类成员的类型可具有五种已声明可访问性中的任何一种,而声明为命名空间成员的类型只能具有 public 或 internal 已声明可访问性。)

       

    源文档 <file:///F:\book\基本功\C%23%20Language%20Specification%201.2.doc>

    在下面的示例中

    public class A

    {

    public static int X;

    internal static int Y;

    private static int Z;

    }

    internal class B

    {

    public static int X;

    internal static int Y;

    private static int Z;

    public class C

    {

    public static int X;

    internal static int Y;

    private static int Z;

    }

    private class D

    {

    public static int X;

    internal static int Y;

    private static int Z;

    }

    }

    类和成员具有下列可访问域:

  • A 和 A.X 的可访问域无限制。
  • A.Y、B、B.X、B.Y、B.C、B.C.X 和 B.C.Y 的可访问域是包含程序的程序文本。
  • A.Z 的可访问域是 A 的程序文本。
  • B.Z 和 B.D 的可访问域是 B 的程序文本,包括 B.C 和 B.D 的程序文本。
  • B.C.Z 的可访问域是 B.C 的程序文本。
  • B.D.X 和 B.D.Y 的可访问域是 B 的程序文本,包括 B.C 和 B.D 的程序文本。
  • B.D.Z 的可访问域是 B.D 的程序文本。

    如示例所示,成员的可访问域决不会大于包含它的类型的可访问域。例如,即使所有的 X 成员都具有公共级的已声明可访问性,但除了 A.X 外,所有其他成员的可访问域都受包含类型的约束。

       

    源文档 <file:///F:\book\基本功\C%23%20Language%20Specification%201.2.doc>

       

       

   

   

注释设计

2008年12月12日

10:24

有待研究

posted @ 2009-10-17 12:17  Young跑跑  阅读(337)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3