Some basic points

 
1.       To kill the nullreferance exception

 public event MyDelegate myEvent;

 if( myEvent != null )    myEvent(); 

myEvent is a class. it also use new to create a instance.  

2.       To use index in Class

use a property like here :

public MyType this[int index]
{
    get{return (MyType)someCol[index] ;}
}

 

3.       Use interface instead of class for the return type 

use IList instead of ArrayList

use IDictionary instead of Hashtable

use IDataReader instead of SqlDataReader

use IConnection instead of SqlConnection 

so , in the future , we can easily change the  realization. 

4.       Use factory method instead of the construct method 

so, wo can not have to know the detail of building  the class 

factory method return abstract class or interface  

5.       Use a object instead of a lot of 'string and int '  parameter, especially when the parameter is not so  fixed. 

for example, use a DataRow instead of a row value  list 

6.       throw own exception in each layer of the System, never ingnore Unknown type Exception never let User see NullReferanceException no one know what it means. 

throw own exception in each layer of the System ,for example ,  

in the DAO :

try{

    ICommand.ExecuteNoneQuery();   

}

catch(SqlException ex)

{

    throw new DatabaseException(ex);

}

[you must add string 'database error' to the  DatabaseException message

so the DatabaseException message will be like this  : " database error : it has too more chars in the  column <password> "]

 

in the business layer:

 

try

{

    DBHelper.Execute(someSql);

}

catch(DatabaseException ex)

{

    throw new BusinessCannotExecuteException (ex);

}

 

never ingnore Unknown type Exception , for example ,

 

try

{

    Something();

}

catch(Exception ex)

{}

 

Youd better do it like this:

 

try

{

    Something();

}

catch(SomeExceptionType ex)

{

}

catch(Exception ex)

{

    // log here

    throw ex;

}

 

So the exception can breakthrougth to the top layer.

 

 

7.       use Asynchronous Method instead of Synchronous  Method,especially when the process will take a long  time and we are developing a GUI project.

 

it can help us to keep the UI smart.

 

8.       use lock to lock resource when the program may run in more than 1 threads

 

lock(myObject)

{

    doSomething(myObject);

}

 

myObject cannot be value type

 

In static method

lock(typeof(thisClassName))

{

    doSomething();

}

 

 

posted @ 2005-08-15 14:27  quitgame  阅读(320)  评论(0编辑  收藏  举报