C#编码好习惯小结

2019-05-12 08:16:05于海丽


52.  不要硬编码可能更改的基于配置的字符串,比如连接字符串。

53.  当需要构建长的字符串的时候,使用StringBuilder不要使用string

54.  避免在结构里面提供方法。

a)  建议使用参数化构造函数

b)  可以重裁操作符

55.  总是要给静态变量提供静态构造函数。

56.  能使用早期绑定就不要使用后期绑定。

57.  使用应用程序的日志和跟踪。

58.  除非在不完全的switch语句中否则不要使用goto语句。

59.  在switch语句中总是要有default子句来显示信息(Assert)。

int number  = SomeMethod();

switch(number)

{

   case 1:

      Trace.WriteLine("Case 1:");

      break;

   case 2:

      Trace.WriteLine("Case 2:");

      break;

   default :

      Debug.Assert(false);

      break;

}

60.  除非在构造函数中调用其他构造函数否则不要使用this指针。

// 正确使用this的例子

public class MyClass

{

   public MyClass(string message )

   {}

   public MyClass()  : this("hello")

   {}

}

61.  除非你想重写子类中存在名称冲突的成员或者调用基类的构造函数否则不要使用base来访问基类的成员。

// 正确使用base的例子

public class Dog

{

   public Dog(string name)

   {}

   virtual public void Bark( int howLong)

   {}

}

public class GermanShepherd : Dog

{

   public GermanShe pherd(string name): base (name)

   {}

   override public void Bark(int  howLong) 

   {

      base .Bark(howLong);  

   }

}

62.  基于模板的时候要实现Dispose()和Finalize()两个方法。

63.  通常情况下避免有从System.Object转换来和由System.Object转换去的代码,而使用强制转换或者as操作符替换。

class SomeClass

{}

//避免:

class MyClass<T> 

{   

   void SomeMethod(T t)