代码改变世界

提高C#编程水平的50个建议

2009-07-28 20:30  飞逝心情  阅读(289)  评论(0编辑  收藏  举报

看到CSDN上有篇博客(点此查看原文),讲的是如何提高C#的编程水平,我看了下,转载下来,并加上自己的意见,我自己做过的都标蓝,有不同见解的标红。

1.总是用属性 (Property) 来代替可访问的数据成员

2.在 readonly 和 const 之间,优先使用 readonly

3.在 as 和 强制类型转换之间,优先使用 as 操作符

4.使用条件属性 (Conditional Attributes) 来代替条件编译语句 #if

5.总是为自定义类重载 ToString 方法

  • 这个还是很重要的,遗憾的是我很少用,总是在需要的时候才添加,ToString方法在日志记录时很方便的

6.区别值类型和引用类型

7.使用不可变的值类型(Immutable Atomic Value Types)

  • 这个还没有理解是什么意思

8.在值类型中,确保0是一个合法的数据

  • 这个很重要,也很容易遗漏,其实可以引申过来,默认值合法与不合法需要详细讨论

9.理解 ReferenceEquals, static Equals, instance Equals 和 比较运算符(==)之间的关系

10.理解 GetHashCode方法的缺陷

11.在编写循环时,优先使用 foreach.

12.在定义变量的时候就将其初始化

  • 这个也是要具体情况具体分析的,不过大多数情况下,值得这样做

13.使用静态构造函数来初始化静态成员变量

14.用多个构造函数时,利用构造函数链

  • 准备使用,的确很强大,而且易维护

15.使用using和try/finally来处理资源的释放

  • 虽然经常见别人,可自己为什么就想不起用呢

16.尽量避免产生资源垃圾

17.尽量避免使用装箱(boxing)和拆箱(unboxing)

18.实现类的 Dispose 方法

  • 如果不是非托管类,这个没有太大的必要

19.在接口和继承(Inheritance)之间,优先使用接口(interface)

20.区分接口和重载(overrides)

21.用委托(delegate)来实现回调(callback)

22.用事件(event)来定义外部接口

23.避免返回类内部成员的引用

24.使用元数据来控制程序

  • 这个还是不懂

25.优先使用可序列化(serilizable)类型

  • 还是具体情况具体分析

26.对需要排序的对象实现IComparable和IComparer接口

27.避免使用 ICloneable接口

28.避免使用类型转换操作符

  • 同样的,类型转换在值类型时不可避免的

29.只有当基类加入了与派生类中现有的函数名称相同的函数时,才需要使用 new 操作符

  • 这一条没有明白,不过老实说,使用new创建对像也没有那么大的坏处!

30.尽量使用 CLS-Compliant

31.尽量编写短少,简单的函数

32.尽量编写比较小的程序集(assembly)

33.限定类型的可见性(visibility)

34.编写大粒度的 web API

35.在使用事件时,优先继承基类事件,而不是重新创建一个事件

36.多使用 framework 的运行时调试 (DEBUG, TRACE, EVENTLOG等)

37.使用.net标准的配置机制

38.使用并且在类中支持.net的数据绑定功能 (Data Binding)

  • 这个没有做过,有机会看看应该怎么做

39.使用.net的验证机制 (Validation)

40.根据你的需求选择正确的集合类(Collection)

41.在自定义结构中使用 DataSet

42.利用属性(Attributes)

43.不要过度使用反射(Reflection)

  • 反射应该用在他需要的位置,而不是其它地方。反射会造成内存的开销,过度使用会降低低性能

44.创建完整的,应用程序特定的异常

45.尽可能多的考虑程序可能出现的异常,并作出处理

  • 这一条也是高级程序员必备的技能

46.尽可能少的使用 Interop

47.尽量使用安全代码 (safe code)

48.多多学习、使用外部工具和资源

49.准备使用 C# 3.5

50.学习 ECMA 标准


本文部分来自CSDN博客,原文地址:http://blog.csdn.net/gisfarmer/archive/2009/02/27/3941345.aspx