20条.net编码习惯(转载)
2010-01-20 13:33
281 查看
1、不要硬编string/ numeric,可以使用一些常量代替。 (提高可读性)
int Count;
Count = 100;
private static const int ZERO = 0;
if( Count == ZERO )
{
// 执行一些操作
}
2、对于字符串比较-使用String. Empty ,而不是""。
3、不要声明成员变量为 public 或者proteted,尽量使用private 成员变量和public/protected 属性。 (修改)
4、当我们要在循环操作字符串,使用StringBuilder,而不是字符串,示例如下。
不好的习惯:
String temp = String.Empty;
for( int i = 0 ; i<= 100; i++)
{
temp += i.ToString();
}
好点的习惯:
StringBuilder sb = new StringBuilder();
for ( int i = 0 ; i<= 100; i++)
{
sb.Append(i.ToString());
}
5、简单的操作,比起Collection更倾向使用Array。 (视情况,这里是建议)
6、比起ArrayList更倾向使用Generic Collection。 (视情况,这里是建议)
7、比起HashTable更倾向使用Generic Dictionary。 (视情况,这里是建议)
8、对于字符串的操作和存储,倾向于StringCollection和StringDictionary。 (视情况,这里是建议)
9、使用适合的数据类型。
例如:你想要判断状态,使用bool比int要好。
不好的习惯:
int Check = 0;
if( Check == 0 )
{
// 执行一些操作
}
好点的习惯:
bool Check = false;
if(!Check)
{
// 执行一些操作
}
10、使用as做类型转换的时候,对转换后的值进行null值判断
class A
{
}
class B : A
{
}
B objB = new B();
A objA1 = (A) objB;
A objA2 = objB as A;
if( objA2 != null)
{
//执行所需的操作
}
11、创建wcf代理,可以使用using表达式。 (很多地方可以这样使用)
using(Cerate the proxy)
{
//执行所需的操作
}
12、对于昂贵的资源(例如Connection, File 等等),遵照'Acquire late, release early’ (尽量晚的获取,尽量早的释放)准则。
例子:如果你想在数据操作时,使用的SqlConnection对象,请在方法级别,而不是在类级别创建实例。
代码
class MyData : IDisposable
{
SqlConnection objConnection ;
public MyData()
{
objConnection = new SqlConnection("Connection string");
}
public List<Customer> GetAllCustomer()
{
//通过objConnection得到需要的数据
}
public void Dispose()
{
//清理SqlConnection实例
if( objConnection != null )
{
if( objConnection.State == ConnectionState.Open)
{
objConnection.Close();
}
}
}
}
13、如果你不想别人扩展你的类功能,使用‘sealed’。
14、避免为每个类都声明‘destructor’ ,因为它会增加不需要常驻内存的类的生命周期。
15、相对manual threading,更倾向用Thread Pool 。
16、在循环内不要去调用其它方法。 (call function 有性能损耗)
例如:
不好的习惯:
for( int i = 0; i<= 100; i++)
{
Calculate(i);
}
好点的习惯:
for( int i = 0; i<= 100; i++)
{
//直接写Calculate逻辑。
}
17、不要在循环内处理异常,而是将循环处理的逻辑放在try/catch里面
不好的习惯:
for(int i = 0 ; i<= 100; i++)
{
try
{
}
catch(Exception ex)
{
throw ex;
}
}
好点的习惯:
try
{
for(int i = 0 ; i<= 100; i++)
{
}
}
catch(Exception ex)
{
throw ex;
}
18、不用通过异常处理应用程序的逻辑
例如:
不好的习惯:
try
{
int x,y,z;
x = 0;
y = 10;
z = y/x;
}
catch(DevideByZeroException ex)
{
Throw ex;
}
好点的习惯:
try
{
int x,y,z;
x = 0;
y = 10;
if( x != 0 )
{
z = y/x;
}
}
catch(Exception ex)
{
}
19、相对for/while ,倾向使用foreach循环。[更正]
20、使用多层架构的系统,层与层之间的交互,比起DataSet/DataTables更倾向于使用对象传递数据。
int Count;
Count = 100;
private static const int ZERO = 0;
if( Count == ZERO )
{
// 执行一些操作
}
2、对于字符串比较-使用String. Empty ,而不是""。
3、不要声明成员变量为 public 或者proteted,尽量使用private 成员变量和public/protected 属性。 (修改)
4、当我们要在循环操作字符串,使用StringBuilder,而不是字符串,示例如下。
不好的习惯:
String temp = String.Empty;
for( int i = 0 ; i<= 100; i++)
{
temp += i.ToString();
}
好点的习惯:
StringBuilder sb = new StringBuilder();
for ( int i = 0 ; i<= 100; i++)
{
sb.Append(i.ToString());
}
5、简单的操作,比起Collection更倾向使用Array。 (视情况,这里是建议)
6、比起ArrayList更倾向使用Generic Collection。 (视情况,这里是建议)
7、比起HashTable更倾向使用Generic Dictionary。 (视情况,这里是建议)
8、对于字符串的操作和存储,倾向于StringCollection和StringDictionary。 (视情况,这里是建议)
9、使用适合的数据类型。
例如:你想要判断状态,使用bool比int要好。
不好的习惯:
int Check = 0;
if( Check == 0 )
{
// 执行一些操作
}
好点的习惯:
bool Check = false;
if(!Check)
{
// 执行一些操作
}
10、使用as做类型转换的时候,对转换后的值进行null值判断
class A
{
}
class B : A
{
}
B objB = new B();
A objA1 = (A) objB;
A objA2 = objB as A;
if( objA2 != null)
{
//执行所需的操作
}
11、创建wcf代理,可以使用using表达式。 (很多地方可以这样使用)
using(Cerate the proxy)
{
//执行所需的操作
}
12、对于昂贵的资源(例如Connection, File 等等),遵照'Acquire late, release early’ (尽量晚的获取,尽量早的释放)准则。
例子:如果你想在数据操作时,使用的SqlConnection对象,请在方法级别,而不是在类级别创建实例。
代码
class MyData : IDisposable
{
SqlConnection objConnection ;
public MyData()
{
objConnection = new SqlConnection("Connection string");
}
public List<Customer> GetAllCustomer()
{
//通过objConnection得到需要的数据
}
public void Dispose()
{
//清理SqlConnection实例
if( objConnection != null )
{
if( objConnection.State == ConnectionState.Open)
{
objConnection.Close();
}
}
}
}
13、如果你不想别人扩展你的类功能,使用‘sealed’。
14、避免为每个类都声明‘destructor’ ,因为它会增加不需要常驻内存的类的生命周期。
15、相对manual threading,更倾向用Thread Pool 。
16、在循环内不要去调用其它方法。 (call function 有性能损耗)
例如:
不好的习惯:
for( int i = 0; i<= 100; i++)
{
Calculate(i);
}
好点的习惯:
for( int i = 0; i<= 100; i++)
{
//直接写Calculate逻辑。
}
17、不要在循环内处理异常,而是将循环处理的逻辑放在try/catch里面
不好的习惯:
for(int i = 0 ; i<= 100; i++)
{
try
{
}
catch(Exception ex)
{
throw ex;
}
}
好点的习惯:
try
{
for(int i = 0 ; i<= 100; i++)
{
}
}
catch(Exception ex)
{
throw ex;
}
18、不用通过异常处理应用程序的逻辑
例如:
不好的习惯:
try
{
int x,y,z;
x = 0;
y = 10;
z = y/x;
}
catch(DevideByZeroException ex)
{
Throw ex;
}
好点的习惯:
try
{
int x,y,z;
x = 0;
y = 10;
if( x != 0 )
{
z = y/x;
}
}
catch(Exception ex)
{
}
19、相对for/while ,倾向使用foreach循环。[更正]
20、使用多层架构的系统,层与层之间的交互,比起DataSet/DataTables更倾向于使用对象传递数据。
相关文章推荐
- 艾伟_转载:20条.NET编码习惯
- 20条.net编码习惯
- 20条.net编码习惯 【转】
- 20条.net编码习惯
- 20条.net编码习惯
- 20条.net编码习惯
- 一起谈.NET技术,20条.NET编码习惯
- 20条.net编码习惯(转)
- C # 编码 习惯[转载]
- [转载] 20条常见的编码陷阱
- Google Java编程风格指南(献给那些没有良好编码习惯的程序员们)转载!
- 修改查看MySQL编码格式【转载】
- 转载一篇文章,关于编码的,受益匪浅
- python转载[编码问题]
- .net设计模式(转载)
- [转载].Net线程问题解答
- [转载]编码区别
- .Net 序列化(去除默认命名空间,添加编码)
- 在 .NET 中使用 Oracle 数据库事务(转载)
- 转载暴强贴:从.NET平台调用Win32 API