关于编程的一些课本不会告诉你的小知识

学编程以来已经三年了,然后最近看了一本林锐博士的《高质量C/C++编程指南》(百度文库链接),感觉很多编程风格确实是值得借鉴学习的,在这里做一个小总结。

一、编程风格

  • 函数或者类的定义、声明结束后,函数体内部逻辑密切的语句与其他地方都使用空行隔开。
  • 一行代码只完成一件事,定义变量记得初始化。比如定义一个变量,只写一条语句等等。
  • if、for、while、do独占一行,执行语句不论是几句都加上 { } 。
  • 关键字后留一个空格,函数名后不留空格以作区别 。
  • “ ( ” 向后紧跟,“ ) , ; ” 向前紧跟,, ; 之后留空格,二元操作符前后加空格,一元不加
  • “ * ”操作符紧跟指针变量名,与其构成整体。“ & ”同理。
  • 程序分界符 “ { ”和 “ } ”应独占一行,位于同列,同时与引用它的语句左对齐。
  • 注释一般写在代码的上方或者右方。

二、默认规则

  • 对于widows系统函数命名一般采用大小写混排,Linux系统是小写字母加下划线。
  • 不要出现与标识符一样命名的局部变量或者全局变量,避免在命名里出现数字编号,尽量让命名有意义。
  • 静态变量前面加s_(static),全局变量前面加g_(global)。
  • 需要对外开放的声明放到头文件里,不需要的直接放在文件开头就好。
  • 若一些常量之间有关联时,在定义时应包含这些关联,有利于代码可读性。
  • 函数的形参一般不要过多,最好不超过5个,结构体做形参一般传址调用,当不需要形参时最好写上void。
  • 若形参是只做输出作用的指针,定义时在类型前加const。提高程序安全性和健壮性。
  • 对于函数,功能尽量单一,规模控制在50行之内。
  • 当返回值可直接返回时,就直接返回,不要创建中间变量。例如:
    return int(x + y);    //方式一
    
    int temp = x + y;    //方式二
    return remp;
    
    方式一明显优于方式二,虽不明显但一定程度上减少了开销,提高了可读性。
  • 多层循环里,一般最长的循环放到最内层,减少CPU跨切循环层的次数。
  • 循环和条件相互嵌套时,循环次数 n 较大时,把条件判断放到外面,趋于流水线循环,提高效率;循环次数 n 较小时,把条件判断放到里面,此时程序的简洁可弥补破坏流水线模式的损失。

三、小技巧/冷知识

  • 断言 assert 是一个仅在 Debug 版本起作用的宏。
  • if 语句里不可将Bool变量直接与TRUE、FALSE或者1、0进行比较。可以采用下面的方法:
    Bool flag;
    if (flag) {}
    if (!flag) {}
    
  • 指针变量的 0 值是空,记作:NULL。比较时可按照下面的方法:
    int *p;
    if (p == NULL) {}
    if (p != NULL) {}
    
  • 遇到下面的情况,可按代码片所示进行优化:
    //原始版本
    if(req) 
        return x;
    return y;
    //初步优化
    if(req) 
    {
        return x;
    }
    else
    {
        return y;
    }
    //进一步优化
    return (req ? x : y);
    
  • 表示常量时,const修饰的常变量优于#define表示的宏,因为前者表示有明确的数据类型。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值