C/C++教程

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

本文主要是介绍【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替代。

这篇关于【Clean C++】 读书笔记 第四章的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!