C++ / a working model

BOOK / SOURCE & READING RECORD

C++ Coding Standards: 101 Rules, Guidelines, and Best Practices

Herb Sutter; Andrei Alexandrescu

1st edition, copyright 2005 (published October 2004)

READING EVIDENCE / 已读完整正文

C++ Coding Standards: 101 Rules, Guidelines, and Best Practices

已取得第一版完整 PDF,顺序读完 0–100 全部 101 条的正文(Summary、Discussion、Examples、Exceptions 与 References),并逐页直接查看嵌入代码图像所在的全部 80 个实质页,补齐文本提取留下的代码空白。另交叉阅读官方 Items 1、25、73、74、83。汇总与索引不计正文。auto_ptr、动态异常规范、旧式适配器等仅作历史语境;原创示例采用 C++20,不照搬旧代码。

查看版本、实际阅读范围与原文入口 →

阅读原创实践:错误边界:报告失败不等于处理失败 →

让错误停在有决策权的边界

错误被发现、被翻译和被处理,是三个不同职责。解析函数知道哪一段输入不符合语法,却未必知道应当重试、提示用户还是取消整个任务;因此它不能为了返回一个数而伪造成功。上层如果只负责转发,就让异常继续传播;只有掌握业务上下文的地方才添加业务含义,只有能够选择恢复动作的地方才结束传播。按引用捕获与裸 throw 保留异常的动态类型,而不是为了每层都有 catch 就复制并切掉信息。现代代码也可用错误值表达失败,但边界必须明确成功与失败互斥,不能把日志输出误当作恢复。这里的原创例子用解析金额说明这种职责划分,不复制书中案例。

阅读定位:Items 73–74,书页 144–145;结合 Item 25,书页 46。

原文与实际阅读范围

Pearson 版权所有;第三方公开 PDF 仅作私有研究证据,可访问不等于转载许可。站点只发布原创解释、原创示例和出版社外链,不托管或链接第三方电子书下载。

能下载不等于已经读完;试读章节不等于全书。这里的原创笔记不是原书全文、译本或逐章替代品。

相关基础知识

相关主题链接用于补充背景,不表示这些既有文章已经按整本书核查。

← 返回全部书籍