编辑: ok2015 | 2017-10-10 |
5 CppCoreGuidelines阅读笔记 通常,经过复杂处理后的数据应该满足某些从代码实现来看并不是一目了然的约束.把这种 约束在事后直接表达出来既可以检测运行期的错误,又可以对阅读者理解前面的算法有帮 助. 如果有模板参数,应该按照ISO的concept标准写一个requires语句来表达模板参数的约束 如果发生了错误,使用异常 在新的C++标准中,可以方便的使用tuple和tie来返回多个值,所以如果不喜欢使用异常,也 可以使用多值返回来表达错误信息. 避免使用裸指针来转移资源所有权(可以使用额外提供的owner) 申明不能为空的指针为not_null 不使用裸指针传递数组(使用span) 避免任何可能依赖执行顺序的静态变量初始化 避免太多函数参数 原作认为4个参数就已经多了.只有极少数函数需要多达四个参数. 但是这个规则容易导致简 单的把一堆参数打包成一个无法很好命名的struct了事. 事实上,函数参数过多通常是接口设 计时职责不单一造成的,应该分解该函数,而不是简单的包装一个struct而已. 接口中不应该包含意义不明的同类型易混淆的多个参数 继承中最好使用抽象类作为父,而不是一个具现类 对于跨编译器使用的ABI接口,最好使用pure C子集 函数 把有明确意义的操作打包成有良好命名的函数 理解C++
6 CppCoreGuidelines阅读笔记 开放资源 C++标准 https://isocpp.org/std/the-standard C++语言的资料 http://en.cppreference.com 在线C++代码编辑运行 http://coliru.stacked-crooked.com C++标准草稿的git库 https://github.com/cplusplus/draft 最接近C++17正式版的草稿版本 最接近C++14正式版的草稿版本(C++标准委员会网站提供的) http://www.open- std.org/jtc1/sc22/wg21/docs/papers/2014/n4296.pdf C++14正式版需验证的草稿版 http://www.open- std.org/jtc1/sc22/wg21/prot/14882fdis/n4141.pdf 最接近C++14正式版的草稿版本(正式版的前一个草稿版) https://github.com/cplusplus/draft/blob/master/papers/n4140.pdf 最接近C++11正式版的草稿版本(C++11正式版发布后的第一个新的草稿版本) http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf C++11正式版需验证的草稿版 http://www.open- std.org/Jtc1/sc22/wg21/prot/14882fdis/n3291.pdf 最接近C++07正式版的草稿版本(没找到特别的信息,取自2007年最后一个working draft) http://www.open-std.org/Jtc1/sc22/wg21/docs/papers/2007/n2461.pdf 最接近C++03正式版的草稿版本(没有特别信息,取自2004年第一个不需要验证的 working draft) http://www.open-std.org/Jtc1/sc22/wg21/docs/papers/2004/n1638.pdf C++03正式版需验证的草稿版 http://www.open- std.org/Jtc1/sc22/wg21/prot/14882fdis/n1577.pdf 最接近C++98正式版的草稿版本 C++03正式版(按理说正式版不应该在网上免费流传,不过这个版本似乎真的是正式 版) http://cs.nyu.edu/courses/spring13/CSCI-GA.2110- 001/downloads/C++%20Standard%202003.pdf C++98正式版(按理说正式版不应该在网上免费流传,不过这个版本似乎真的是正式 版) http://sites.cs.queensu.ca/gradresources/stuff/cpp98.pdf 编制资源列表时参考过的资源 关于去哪里下载C++标准的问答 http://stackoverflow.com/questions/81656/where-do-i- find-the-current-c-or-c-standard-documents 理解C++
7 开放资源