【Clean C++】 读书笔记 第四章

Clean C++ code 第四章 读书笔记


命名与注释

  1. 源代码文件、命名空间、类、模板、函数、参数、变量和常量等,都应该具有意义的名字
  2. 名称应该自注释
  3. 不要为易懂的代码写注释

函数

  1. 函数应当只做一件事,而且尽可能的小
  2. 目前c++编译器对函数优化已经做的足够好,可以写小函数,不会有开销的影响
  3. 函数的参数应该尽可能的少,一个参数比较理想。
  4. 避免在函数的参数使用bool类型的标志参数,因为这样调用时不可避免的需要使用true/false, 可以通过函数组合调用的方式,或者通过派生的方式控制不同的行为
  5. 避免使用输出参数,因为用户可能不知道函数会改变输出参数,如果参数结合紧密,可以将其定义为类/结构体,也可以使用std::tuple或者std::pair,将多个输出结果组合输出
  6. 如果在类中声明成员函数后附加override,那么编译器将检查该函数是否为虚函数,并从基类覆盖虚函数,防止因为错别字而声明新的函数。
  7. 不要输出0,NULL, nullptr,这样将对nullptr的判断处理交给了用户。
  8. 从c++11开始,我们可以将大型的对象作为返回值直接返回,而不需要考虑昂贵的拷贝构造代价,即会自动使用move语义。
  9. 使用引用而不是指针作为函数参数,可以防止指针没有被初始化
    10.如果不可避免地处理指向资源的指针,请使用智能指针

C++工程中C风格代码

  1. 使用c++的string代替char*
 // 该数组固定大小,无法扩展
 // 传递时,需要使用char*传递到函数中
 // 尾部会+1,存入\0,将size变为8,\0的值不能被更改
 char name[] = "Stephan";
 // 常量输出,不可更改
 const char* const name = "stephan";
  1. 避免使用printf(),sprintf()和gets()
  2. 类可以通过使用输入输出运算符的重载而直接std::cout << object;
  3. 使用标准的容器库而不是c风格的数组,使用array替代
    4.1 c风格的数组作为参数传递时,无法知道数组大小
    4.2 c风格的数组不具有STL兼容的接口
  4. 使用c++类型转换static_cast,而不是c风格的强制转换。c++风格的类型转换会在编译时期进行检查,而c风格的类型转换不会在编译时期进行检查,因而运行时期可能出错。
  5. 避免使用define宏,考虑到常见的算符优先级导致的错误,使用常量表达式constexpr替代。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值