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;

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

  • 相关阅读:
    自己的一个ALV隐藏列例子
    BAPI FOR MD61,MD62,MD63
    ALV 实现多表格 ( 多表格的ALV List
    MESSEG 类型
    Linux 启动tomcat服务器2
    oracle 笔记记录
    昨天、今天、明天
    Linux操作系统下MySQL数据库的使用方法(345)
    PHP安装问题
    另样文字 借你来欣赏
  • 原文地址:https://www.cnblogs.com/dadream/p/4354202.html
Copyright © 2011-2022 走看看