搜索

pdf文档 Irksome C++

3.03 MB 15 页 0 下载 97 浏览 0 评论 0 收藏
所属分类: 后端开发 / C++
语言 格式 评分
英语
.pdf
3
摘要
文档主要讨论了C++语言和标准库中存在的命名约定和设计上的不一致性,这些问题让开发者在使用过程中感到困惑和不便。作者Walter E. Brown通过多个具体例子,如数组边界、迭代器命名、类型术语混淆等,指出了这些问题的根源,并表达了希望改进的愿望。尽管这些问题并非致命缺陷,但它们确实增加了学习和使用C++的难度。
AI总结
《Irksome C++》是Walter E. Brown对C++语言和标准库中命名、行为和设计上的诸多“quirks”(怪癖)进行批评和反思的文档。以下是主要内容的总结: --- ### 1. **命名问题:术语的不一致** - **核心观点**:C++的命名系统在很多方面不够理想,尽管修改命名在技术上可能困难重重,但作者建议开发者提高对命名重要性的认识。 - **例子**: - **数组**:核心语言使用“bound”描述数组大小,而标准库使用“extent”相关术语,这种不一致令人困惑。 - **迭代器**:标准库中`end()`表示“过去末尾”,而不是“末尾元素之后”,这种命名容易混淆,尤其是对新手。 - **类型术语**:类类型(class type)和类(class)的概念容易混淆,例如`union`类型是类类型但不是类。 - **命名前缀**:标准库中使用`as_`和`to_`前缀时不够一致,例如`addressof`和`tolower`等命名未遵循统一规则。 --- ### 2. **行为问题:命名与实现的不一致** - **核心观点**:C++标准库中某些功能的行为与其命名不一致,导致学习和使用上的困扰。 - **例子**: - **max和min算法**:标准库的`max`和`min`函数返回相同结果(当参数相等时返回第一个参数),但作者认为这与命名的期望不符。 - **`as_const`和`as_const_view`**:`as_const`是函数模板,而`as_const_view`是类型,这种命名差异令人困惑。 - **`void`类型**:`void`是一个不完整的类型,无法直接使用,但其命名并未清晰传达这一特性。 --- ### 3. **其他设计问题**: - **类型设计的意外变化**: - `nonesuch`类型原本设计为一个无法使用的类型,用于检测操作是否合法,但随着C++标准的演进,它被归类为“聚合类型”(aggregate type),导致意外行为。 - **浮点字面量的不一致性**: - 浮点字面量的精度在不同上下文中可能变化(如`FLT_EVAL_METHOD`的影响),导致`static_assert`等断言失败。 - **`vector`的缺陷**: - `vector`不满足容器要求,因为它使用代理类型而不是真实引用类型,导致与标准库算法的兼容性问题。 --- ### 4. **总结与反思**: - **核心观点**:C++语言和标准库的设计中存在许多“小问题”,虽然这些问题并不致命,但对学习、使用和教学造成了困扰。 - 作者认为这些问题的根源在于历史包袱和技术演进中的折中选择,尽管无法完全修复,但希望社区能够更加关注命名和行为的一致性。 --- ### 5. **作者背景**: Walter E. Brown是C++标准化工作组的成员,参与了多项C++标准库功能的设计和实现,包括``、``等头文件。他基于长期的编程经验提出了上述批评,并希望通过反思推动语言和库的设计改进。 --- ### 总结: 《Irksome C++》主要批评了C++在命名、行为和设计上的不一致问题,并通过具体案例展示了这些问题对开发者的影响。尽管这些问题并不致命,但作者希望通过反思和改进,减少学习和使用C++时的困扰。
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余 3 页请下载阅读 -
文档评分
请文明评论,理性发言.