zoukankan      html  css  js  c++  java
  • 咫尺与天涯

    软件运行时展现出来的极严重的错误,在代码中,也许只是一个字符的错误!

    就像是vector,一开始的咫尺,到最后就是天涯!

    又像是蝴蝶挥动的翅膀,最终导致的飓风!

    程序员的职业素质,就是有架构师的视野,自顶至下的计划,精密的逻辑,同时还要有抽丝拨茧的技术。

    难缠的错误列表

    1、溢出错误

    在该实例中,移位操作针对int整数操作,导致数值溢出错误。

    int b = 0;
    int
    n = 0; ... n |= (b & 31) << k; vs
    int b = 0;
    long n = 0; ... n |= (b & 31L) << k;

    以上两段代码唯一的区别就是在31后面加了L表示长整型数。如果不用长整型数,在向左移位时就会导致移除错误。由于程序逻辑没有问题,只是执行结果是错的,调试起来极其麻烦。在程序设计中,使用移位操作时记得使用较大的类型避免溢出错误的发生。

    2、?:运算符使用

    在该实例里面,RealNumberValue记录了统计结果的值,结果使用三元运算符返回了错误的结果导致统计结果始终无法显示。

    public double RealNumberValue
    {
    get
        {
            if (this.qrMeasures == null || this.qrMeasures.Count == 0)
                return double.NaN;
            return this.qrMeasures[this.measureIndex].Values != null
                ? double.NaN
                : (double) this.qrMeasures[this.measureIndex].Values[this.rowIndex];
        }
    }

    在使用?:三元运算符是,一定要避免将返回结果写反的情况,否则将导致返回结果不对的情况。如果不是特别熟练,请使用if..else取代?:的使用。

    3、连续逻辑判断

    在下面的例子中,有两个使用||链接起来的判断,错误发生在连接符上,起初使用的&&。

    if (textureData == null || !texture.Update(textureData, true))
         flag = false;

    连续逻辑判断很容易混淆连接符后面的语句的执行条件,因此如果无法直观的确定后面逻辑的执行条件,请使用两个语句来表示连续逻辑判断,避免逻辑错误。

  • 相关阅读:
    为IIS站点启用SSL加密
    SQL Server Analysis Service身份验证
    安装规划服务器(PPS 2007)
    用SQL Server Compact Edition创建移动应用程序 【转载】
    在Web Service中使用Windows验证的方式
    巧用Excel去除数据表中的重复行
    如何动态切换报表中的图表类型
    使用链接维度
    如何配置订阅以使用 Web 同步(RMO 编程)【转载】
    如何对数据进行合并及分组
  • 原文地址:https://www.cnblogs.com/dadream/p/4354202.html
Copyright © 2011-2022 走看看