zoukankan      html  css  js  c++  java
  • Effective C# 备忘

    第一章 C#语言元素

    项1:总是使用属性,不要使用可访问的数据成员
    项2:常数项尽量使用readonly,而不是const
    项3:类型装换时,不要使用强制转换,使用操作符is或者as
    项4:使用Conditional标记代替#if条件编译
    项5:给你建立的每个类写一个ToString()函数
    项6:搞清楚值类型和引用类型的区别
    项7:尽量选择不可变基础类型
    项8:对于值类型保证0值代表一个有效的状态
    项9:理解ReferenceEquals()、静态Equals()、实例Equals()以及==操作符之间的区别
    项10:理解GetHashCode()的缺陷
    项11:尽量使用foreach循环

    第二章 .NET资源管理

    项12:用变量初始化语句,而不是赋值语句
    项13:使用静态构造函数初始化静态类成员
    项14:利用构造函数链
    项15:利用using语句和try/finally来释放资源
    项16:减少内存垃圾
    项17:减少装箱和拆箱
    项18:实现标准的Dispose模式

    第三章 用C#表达你的设计思想

    项19:定义和实现接口,而不是继承
    项20:搞清楚实现接口和重写虚拟函数的区别
    项21:用Delegate表达回调要求
    项22:用Event定义外发接口
    项23:避免返回类的内部对象的引用
    项24:尽量使用声明方式编程,而不是命令式编程
    项25:尽量使用Serializable类型
    项26:使用IComparable和IComparer接口实现可排序关系
    项27:避免实现ICloneable
    项28:避免实现类型转换操作符
    项29:不要使用new修饰符,除非基类的改变要求你使用它

    第四章 创建二进制组件

    项30:尽量创建符合CLS规格的程序集
    项31:尽量创建小而简单的函数
    项32:尽量创建小而且内聚的程序集
    项33:限制你创建的类型的可见性
    项34:创建Large-Grain(一次传送多个数据) Web调用接口

    第5章 使用.NET框架

    项35:尽量实现可继承的函数,而不是事件处理程序
    项36:有效地使用.NET运行时诊断函数
    项37:使用标准配置机制
    项38:利用和支持数据绑定
    项39:使用.NET验证机制
    项40:根据你的需要使用不同的Collection类
    项41:尽量使用DataSet,而不是自定义结构
    项42:使用属性来简化反射机制
    项43:不要过分使用反射机制
    项44:创建完整的应用程序专用的异常类

    第6章 其他

    项45:尽量使用强异常保证
    项46:尽量少地使用互操作方法(Interop)
    项47:尽量使用安全代码
    项48:关注开发工具和资源
    项49:为C#2.0做好准备
    项50:关注ECMA标准

                                               2008年12月15日

  • 相关阅读:
    [SQL Server] sysobjects的介紹
    [R] [Johns Hopkins] R Programming -- week 3
    [R] 繪圖 Par 函数
    [R] [Johns Hopkins] R Programming -- week 4
    [Ms SQL] 基本創建、修改與刪除
    [R] Lexical & Dynamic Scoping / Execution & Calling environments / Closures
    [R] [Johns Hopkins] R Programming 作業 Week 2
    Python之路【第十七篇】:Django【进阶篇 】
    Django之Form组件
    Python之路【第十六篇】:Django【基础篇】
  • 原文地址:https://www.cnblogs.com/MichaelGuan/p/1355489.html
Copyright © 2011-2022 走看看