《高质量C/C++编程》读书笔记


好的编程风格

  • 将声明和定义分开写
  • ‘{’ ‘}’应独占一行并同一列
  • 尽可能不要使用全局变量
  • 定义变量的时候要同时初始化变量,防止出现不可预测的结果。
  • 修饰符‘*’和‘&’应更靠近变量名。eg:int * x,y,就不能唯一确定x和y的类型,应将 *和x离的更近一些。
  • 书写类的时候,将public(函数)放在private(数据)之前,更加清晰函数功能。
  • 在类定义中定义常量用枚举,不占用对象的存储空间。(有最大值且默认整型)
  • C中定义常量用define,C++中定义常量用define和const且多用const。
  • C++要调用C的函数可以用 extern"C" ,连接交换制定符号。

命名风格

  • windows系统下风格:大小写。eg:MyStrlen
    linux系统下风格:下划线小写。eg:my_strlen
  • 类名和函数名用大写字母开头。
  • 常量用全大写字母命名,下划线分割单词。eg:const NEW_NUM
  • 静态变量加s。eg:static s_age
  • 全局变量加g。eg:g_num

头文件

头文件可以加强类型安全检查,应包括:

  1. 版权和版本声明。
  2. 预处理:为了防止文件重复引用,使用ifndef/define/endif。
  3. 函数、类的声明。

循环语句

if语句

  • BOOL变量与0比较
    正确:
if(flag)
if(!flag)

错误:

if(0 == flag)
  • 浮点型变量与0比较
    正确:
if((x>=-EPSINON) &&(x<=-EPSINON))

错误:

if(0 == x)
  • 指针变量与0比较
    正确:
if(NULL == p)
if(NULL != p)

错误:

if(p)
if(0 == p)

for语句

  • 取值采用"半开半闭"
for(i=0; i

switch语句

  • 每个case语句后不要忘记加break,避免多个分支语句重叠,不要忽略default语句分支。

函数

  • 功能函数结果返回值建议用数字表示,增强可移植性。
  • 正确的值用参数返回,错误的值用return语句获得。
  • 函数调用时,返回值类型不可省略。eg:getchar()返回类型为int。
  • 函数定义时,用于排错处理的返回值不可省略,增加程序的健壮性。
  • 函数参数缺省只能在函数声明中。

指针

  • 野指针:没有初始化,释放指针时没有将其设置为NULL,指针操作超越了变量的作用域。
  • 用完指针不要忘记释放内存,并将其赋为NULL。(防止”野指针”)
  • new/delete 不是库函数,与sizeof()类似是个操作符。
    new相当于 构造函数+malloc(初始化+申请内存)
    delete相当于 析构函数+free (清除工作+释放内存)
  • 内存耗尽处理方法:
    1.判断指针是否为NULL,如果是则用return终止函数或者exit(1)终止坏的程序。
    2.为new和delete设置异常处理函数。

待更……

你可能感兴趣的:(知识点总结,C语言,编程风格)