• Something About Assert()——C#中的断言 Kevin


    如何尽早地发现Bug,提高软件质量的文章。看到了断言技术,感觉断言是每个程序员必备的基本功。可以让程序中的Bug在离其发生地最近的地方被断言发现,防止Bug的蔓延。 
      在.NET中的断言的使用,是使用System.Dig.Debug。断言一般是在程序处于Debug模式下,才起作用。而可以在程序发布时(即Release模式),编译器会采用条件编译,将断言从Release版本的dll中去掉。 
      该使用断言几种使用场景,如: 
    1、方法参数的合法性 
    2、对于非法情况进行断言而对于错误情况不断言且必须处理 
    3、对于任何假定进行断言 
    4、用断言对程序开发环境(OS/Compiler/Hardware   )的假设进行检查 
    5、编写防错程序,然后在处理错误之后可用断言宣布发生错误(一般对于Switch语句中的default进行断言) 
    6、用断言保证没有定义的特性或功能不被使用(如果原先规定的一部分功能尚未实现,应进行断言)。 
      这些断言的使用场景,我都同意。不过,我有以下几个疑问: 
    1、对于第一条,由于断言会在程序的Release版本中由编译器自动去掉,那么往往我们开发一个基本库,public、protected修饰的方法怎么能保证调用者输入的参数的合法性呢(当然如果是调用者使用的是Debug版本的程序那是没有什么问题)。 
    2、我们将程序发布给用户,即使我们在开发过程中使用了断言,可以大大提高程序的质量,但是难免程序中仍然有Bug。那么用户在使用Release版本的程序时,如果程序出现Bug,我们怎么才能像调试阶段一样,在离Bug出生地最近的地方,发现它呢?我目前,只认为可以将程序出现的异常,在程序的最上层,捕获所有的异常,并将异常信息及堆栈信息作为日志保存下来。但是这个时候,我们还是难以定位这个Bug,因为其出生地已经难以定位了

  • 相关阅读:
    勾股定理
    委托应用-表单的创建和编辑
    学生成绩表(输入成绩后自动算出最高、最低、平均分)
    完美拖拽(点击回放运动轨迹)
    实心图案
    微博发布
    批量删除
    数组去重的方法
    模拟垂直滚动条
    点不到的NO
  • 原文地址:https://www.cnblogs.com/kfx2007/p/2553805.html
Copyright © 2020-2023  润新知