C# 注重编程之美,代码的优雅,总结几个平常经常犯的错误


在我们平常编程中,时间久了有时候会形成一种习惯性的思维方式,形成固有的编程风格,但是有些地方是需要斟酌的,即使是一个很小的错误也可能会导致昂贵的代价,要学会善于总结,从错误中汲取教训,尽量不再犯同样错误,注重编程之美,代码的优雅,总结几个平常经常犯的错误。



1、大多数开发人员都不知道内置的验证数据类型的方法,如System.Int32,因此很多人都是自己实现的,其实这是不妥的,因为这些基本类型中都存在自己固有的类型验证方法,下面这个就是自己实现验证的一个字符串是否是数值的代码:
public bool CheckIfNumeric(string value)
{
bool IsNumeric=true;
try
{
int i=Convert.ToInt32(value);
}
catch(FormatException excepiton)
{
IsNumeric=false;
}
return IsNumeric;
}

虽然使用了try catch语句,这不是最佳的做法,更好的方法是下面使用Int.TryParse;
int output=0;
bool IsNumeric=int.TryParse(value,out output);

int.TryParse是更快、更简洁的方法。


2、学会合理的管理公共变量,我们在系统中经常会滥用公共变量,没有做到合适的封装好。
static void Main(string[] args)
{
MyAccount account=new MyAccount();
//这地方不能随便的调用account里面的字段进行更改,但是缺改了
account.AccountNumber="ddddddddd";
Console.ReadKey();
}
public class MyAccount
{
public string AccountNumber;
public MyAcctount()
{
AccountNumber="ssssssssssssss";
}
}

在上面的MyAccount类中生命了一个AccountNumber公共变量,理想情况下,AccountNumber应该是只读的,不能让外界修改,但是这里MyAccount类却没有对它做任何控制。

声明公共做法应该是使用属性,如:
public class MyAccount
{
private stirng _accountNumber;
public string AccountNumber
{
get { return _accountNumber; }
}
public MyAccount()
{
_accountNumber="dddddddd";
}
}

这里我们封装了AccountNumber公共变量,它变成了只读,不能由调用者类进行修改。

3、嵌套的异常处理,有的开发人员喜欢在方法末尾加上处理的嵌套方法,如
public class NestedExceptionHandling
{
public void MainMethod()
{
try
{
//some implementation
ChildMethod1();
}
catch (Exception exception)
{
//Handle exception
}
}

private void ChildMethod1()
{
try
{
//some implementation
ChildMethod2();
}
catch (Exception exception)
{
//Handle exception
throw;

}
}

private void ChildMethod2()
{
try
{
//some implementation
}
catch (Exception exception)
{
//Handle exception
throw;
}
}
}

如果相同的异常被处理多次,性能开销将会增加。

我们的解决方法是让异常处理方法独立开来,如:
public class NestedExceptionHandling
{
public void MainMethod()
{
try
{
//some implementation
ChildMethod1();
}
catch(Exception exception)
{
//Handle exception
}
}

private void ChildMethod1()
{
//some implementation
ChildMethod2();
}

private void ChildMethod2()
{
//some implementation
}
}

4、大数据量上使用Dataset和DataReader混用,当单表数据量很大的情况,使用DataSet是一种很不明智的选择,应为DataSet是以DataTable内存形式存放数据量,一次性将数据拖入内存,当数据很大的情况下,这种方式是很吃内存的,相比DataSer,DataReader就显得优雅很多,它是每次读取一条数据,然后轮询调用机制,但是也有它的弊端,就是相对长连接,但是对内存消耗而言这是有利的,当然DataSet在大部分应用场景下也是有自己的优点,充分解耦、一次性操作、领域模型操作等方面,两者分情况分场景而用,这里只是稍微提提,根据场景分析区别。

原文链接:http://www.cnblogs.com/zhijianliutang/archive/2012/03/20/2407688.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值