zoukankan      html  css  js  c++  java
  • Code Complete读书笔记02

    Chapter12

    3、对浮点数不可直接比较大小,而应用两者之差<某个特定值的方式

             例:double sum=0.0,test=1.0

             for(i=0;i<10;i++)       sum+=0.1;

             if(sum==test)//很有可能不相等,sum最终值为0.999999997

            

             ∴自定义函数equals

             bool Equals(double s1,double s2)

    {

             if(fabs(s1,s2)<0.000001)          return true;

             return false;

    }则可直接比较

    4、避免使用神秘字符与神秘字符串,用具名常量来加以取代

    5、C语言字符串   将长度声明为constant+1

             例: char name[NAMELENGTH+1]={0};

             for(i=0;i<NAMELENGTH;i++)

                       name[i]=…                 //处理

             strncpy(name,some_other_name,NAMELENGTH);        //使用函数

             1)C风格字符串最后一位为’\0’(空结束符) ∴多出一位

             2)C通过字符串末尾取值为0的字节来判断字符串末尾        ∴若忘记最后一位放空值,会bug

             solution:1,声明字符数组的时候把它初始化为0←→NULL(如上)

    2,动态分配字符串,用calloc而不非malloc(calloc会有初始化,malloc只分配内存,无初始化)

         3)用strncpy()而非strcpy()

         strcpy(),strcmp()等都属于危险的库函数(直到空结束符,否则一直运行下去)

         strncpy(),strncmp()会接受一个最大长度的参数(如上)

    6、用布尔变量简化复杂的判断

         例,if( (begin==end) || (end-begin>size) )

         转换为 bool stackEmpty=(begin==end)

                     bool stackFull=(end-begin>size)

                            if(stackEmpty ||stackFull)        //可读性大大增强

    7、每当看到字面形式数字的时候考虑枚举

    8、创建ARRAY_LENGTH宏或者内联

         #define ARRAY_LENGTH(x)      ( sizeof(x)/sizeof(x[0]) )

         例:int MulArray[]={………}

                  for(int index=0;index<ARRAY_LENGTH( MulArray) ;index++)

                            ……

    9、创建自定义数据类型

         例:经纬度表示 typedef float Coordinate;

         Coordinate latitude;

         Coordinate longtitute;//经纬

         当需要提升精度时,只需要修改typedef double Coordinate;

         修改一处即可

  • 相关阅读:
    使用C# lock同时访问共享数据
    将两个DataTable合并成一个DataTable
    嵌套存储过程返回值的调用
    在 Sql Server 中使用 MD5 加密
    用DIV制作即时提示层 防止被select控件遮挡的方法
    操作Cookie公用代码
    JS实现回调例子
    ASP存储过程参数数据类型
    在asp中使用js的encodeURIComponent方法
    Uva 10250 The Other Two Trees
  • 原文地址:https://www.cnblogs.com/yangtianxing/p/2479820.html
Copyright © 2011-2022 走看看