C++ 每周技巧
本文翻译自 Abseil 官网的 C++ Tips of the Week。
Abseil 的 C++ 每周技巧系列汇集了许多关于现代 C++ API 设计、类型使用、生命周期、测试、容器、错误处理和代码可读性的实践建议。源站的 tips 目录也会列出 Performance Tips;这些性能文章已整理在本站的 content/fast 中,因此本目录只收录普通 C++ TotW。
注意:Abseil 保留了原始编号,因此文章编号并不连续。源站中 #3 和 #5 有重复发布日期版本,本目录按较新的源文件整理。本页目录只列出已经翻译完成的文章。
文章目录
- Abseil C++ 每周技巧
- 每周技巧 #1:`string_view`
- 每周技巧 #3:字符串拼接:`operator+` 与 `StrCat()`
- 每周技巧 #5:消失术
- 每周技巧 #10:拆分字符串,而不是吹毛求疵
- 每周技巧 #11:返回策略
- 每周技巧 #18:使用 Substitute 进行字符串格式化
- 每周技巧 #24:拷贝,简写版
- 每周技巧 #36:新的 Join API
- 每周技巧 #42:优先使用工厂函数,而不是初始化方法
- 每周技巧 #45:避免标志,尤其是在库代码中
- 每周技巧 #49:实参依赖查找
- 每周技巧 #55:名称计数与 unique_ptr
- 每周技巧 #59:连接元组
- 每周技巧 #61:默认成员初始化器
- 每周技巧 #64:原始字符串字面量
- 每周技巧 #65:把东西放到该放的位置
- 每周技巧 #74:委托构造函数和继承构造函数
- 每周技巧 #76:使用 `absl::Status`
- 每周技巧 #77:临时对象、移动和拷贝
- 每周技巧 #86:用类枚举
- 每周技巧 #88:初始化:=、() 和 {}
- 每周技巧 #90:退役的标志
- 每周技巧 #93:使用 `absl::Span`
- 每周技巧 #94:调用点可读性和 bool 参数
- 每周技巧 #99:非成员接口礼仪
- 每周技巧 #101:返回值、引用和生命周期
- 每周技巧 #103:标志就是全局变量
- 每周技巧 #107:引用生命周期延长
- 每周技巧 #108:避免 `std::bind`
- 每周技巧 #109:函数声明中有意义的 `const`
- 每周技巧 #112:emplace 与 push_back
- 每周技巧 #116:在参数上保留引用
- 每周技巧 #117:拷贝消除和按值传递
- 每周技巧 #119:using 声明和命名空间别名
- 每周技巧 #120:返回值不可触碰
- 每周技巧 #122:测试夹具、清晰性和数据流
- 每周技巧 #123:`absl::optional` 和 `std::unique_ptr`
- 每周技巧 #124:`absl::StrFormat()`
- 每周技巧 #126:`make_unique` 是新的 `new`
- 每周技巧 #130:命名空间命名
- 每周技巧 #131:特殊成员函数和 `= default`
- 每周技巧 #132:避免冗余的 map 查找
- 每周技巧 #134:`make_unique` 和私有构造函数
- 每周技巧 #135:测试契约,而不是实现
- 每周技巧 #136:无序容器
- 每周技巧 #140:常量:安全惯用法
- 每周技巧 #141:小心到 `bool` 的隐式转换
- 每周技巧 #142:多参数构造函数和 `explicit`
- 每周技巧 #143:C++11 删除函数(`= delete`)
- 每周技巧 #144:关联容器中的异构查找
- 每周技巧 #146:默认初始化与值初始化
- 每周技巧 #147:负责任地使用穷尽式 `switch` 语句
- 每周技巧 #148:重载集
- 每周技巧 #149:对象生命周期与 `= delete`
- 每周技巧 #152:`AbslHashValue` 与你
- 每周技巧 #153:不要使用 using 指示
- 每周技巧 #158:Abseil 关联容器和 `contains()`
- 每周技巧 #161:好的局部变量和坏的局部变量
- 每周技巧 #163:传递 `std::optional` 参数
- 每周技巧 #165:带初始化器的 `if` 和 `switch` 语句
- 每周技巧 #166:当拷贝不是拷贝
- 每周技巧 #168:`inline` 变量
- 每周技巧 #171:避免哨兵值
- 每周技巧 #172:指定初始化器
- 每周技巧 #173:用选项结构体包装参数
- 每周技巧 #175:C++14 和 C++17 中字面常量的变化
- 每周技巧 #176:优先使用返回值,而不是输出参数
- 每周技巧 #177:可赋值性与数据成员类型
- 每周技巧 #180:避免悬垂引用
- 每周技巧 #181:访问 `StatusOr<T>` 的值
- 每周技巧 #182:初始化你的整数!
- 每周技巧 #186:优先把函数放进未命名命名空间
- 每周技巧 #187:`std::unique_ptr` 必须被移动
- 每周技巧 #188:小心智能指针函数参数
- 每周技巧 #197:读锁应当少见
- 每周技巧 #198:标签类型
- 每周技巧 #215:使用 `AbslStringify()` 将自定义类型字符串化
- 每周技巧 #218:使用 FTADLE 设计扩展点
- 每周技巧 #224:避免使用 `vector.at()`
- 每周技巧 #227:小心空容器和无符号算术
- 每周技巧 #229:用于模板元编程的分级重载
- 每周技巧 #231:这里和那里之间:几个容易忽视的小算法
- 每周技巧 #232:变量声明中何时使用 `auto`
- 每周技巧 #234:按值、按指针,还是按引用传递?