防御式编程(一)

43 篇文章 1 订阅
6 篇文章 0 订阅
 
防御式编程小结
防御式编程小结

 

下面列出了防御式编程的一些其它要点.它们大多是编程里的常识,不过无论如何还是值得提一下的.你可能会想要建一张”to do”列表,然后在编程过程中逐项进行检查。

 

l  在函数的开始,检查参数的正确性。确认参数值都落在可接受的范围里。记住编程界里的一句古语:“垃圾进,垃圾出。”

l  在经历一系列相关的表达式之后,检查被操作数作变量的正确性。一系列表达式会改变应用程序的状态。所以要确认其结果是正确的。

l  解决问题时尽可能地处理错误而不是处理异常。

l  尽可能地让函数返回一点东西——不要把返回类型设为void。什么都不返回的函数是无法用异常处理来验证的。

l  一定要检查函数的返回值。不管可能性有多小,不要假设函数不会失败。错误的假设往往是在运行时发生错误的主因。

l  在移植代码时,把指针算法转换成引用。指针会影响到正常的垃圾回收。虽然定义一个不安全的块来保留指针算法可能会比较快捷方便,但是花点时间把指针都去掉会让应用程序更加安全。

l  不要编写不安全的代码。需要用到不安全块的操作往往是危险的应该予以避免。

l  不要直接使用文字变量。重复使用的文字变量是无法被优化的。就像前面展示的一样,文字变量不具备可读性。你应该使用 const 变量.。const 变量是有名字的,而文字量没有,使用const变量能使代码的可读性更好。

l  除非在枚举类型上跳转,否则一定要在switch 块里加上 default 语句。最坏的情况也不过就是用不到 default 情况,这比不小心改变程序的行为要好多了。

l  不要捕捉通用的异常类型。捕捉 System.Exception会掩盖具体的异常乃至问题的本源。而且如果捕捉了所有异常的话,你就无法对某个具体的异常做出反应了。

l  不要对异常进行特殊处理。所谓的特殊处理是指捕捉 System.Exception ,然后在异常处理语句里专门去处理某个具体的异常。这么做的问题在于其它的异常会被过滤掉,这样就无法处理未知的结果了。

l  避免定义或使用 object 类型。Object 类型可能会不小心装箱或是向下转型成某个具体类型。装箱和向下转型都会影响到应用程序的性能。

l  重复的代码就是未来问题的滋生地。把代码重构成可重用的模块或者函数。

l  总是使用泛型集合而不是集合。数组和向量、链表、字典等比起来虽然有点老套,但是数组比集合更简单,通常速度也更快。复杂度越低,问题也就越少。

l  不要为.NET框架类库(FCL)里已有的功能使用原生的 API。

l  for 语句比其它的循环方式要好。for 循环非常结构化并且可以增强程序员的素养。这个结构可以避免疏忽造成的错误。 while 语句等其它类型的循环虽然比较灵活,但是这种灵活性也为不小心的错误打开了方便之门。

l  不使用的对象应该设为 null 。然后你就可以可靠地检查对象的状态了。而且也能帮助垃圾回收的进行。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值