• 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;

         修改一处即可

  • 相关阅读:
    Sbt 配置国内镜像
    spark sql 之 RDD与DataFrame互相转化
    Base64编码和解码工具
    BDB数据库操作工具化
    String、StringBuffer、StringBuilder三者的区别
    常见的数组排序方法
    drop,delete,truncate 三者的异同点
    redis 常用命令
    git shell应用
    机器学习入门之路
  • 原文地址:https://www.cnblogs.com/yangtianxing/p/2479820.html
Copyright © 2020-2023  润新知