导学:官方12章与157条建议学习地图
以2011年第一版作者目录为锚点,把12章157条建议组织为语言契约、运行时所有权、API与安全边界、命名/整洁/交付四段学习和验收路径。
学习目标
- 能说出官方12章、建议1-157的完整边界,并解释四段学习路径如何保持原书顺序和现代decision boundary
- 能分析value、lifetime、failure、public boundary与delivery五条跨章节链,定位一次code review需要回看哪些章节
- 能设计read-predict-implement-verify-transfer学习门禁,用tests、trace、profiler、analyzer或security evidence证明掌握
为什么导学必须先固定版本、目录和验收证据
本书是《编写高质量代码:改善C#程序的157个建议》第一版,作者陆敏技,机械工业出版社,ISBN 9787111356493;本学习体系以作者发布的12章157条目录为唯一outline anchor。旧学习页曾把内容重排成10个泛化主题,导致原书建议不可追溯;本版恢复每条原题,再明确哪些2011结论要在现代.NET中收窄或改写。
先预测:第8条“避免显式enum值”对wire enum是否仍成立;第47条是否要求所有IDisposable类型写finalizer;第118条SecureString是否仍是新.NET默认。正确学习不是答“是/否”,而是给出适用domain、runtime、security和migration evidence。
↡每个学习页面明确保留原建议标题和编号,使现代解释、反例与验证仍可反查到权威目录。官方12章总览
| 章节 | 建议范围 | 核心问题 |
|---|---|---|
| 1 基本语言要素 | 1-15 | conversion、default、equality、representation与runtime binding |
| 2 集合和LINQ | 16-31 | collection shape、ownership、query execution与枚举成本 |
| 3 泛型、委托和事件 | 32-45 | type relationship、closure/event lifetime与variance |
| 4 资源管理和序列化 | 46-57 | deterministic cleanup、native fallback与versioned wire state |
| 5 异常与自定义异常 | 58-70 | failure taxonomy、stack provenance、boundary与log ownership |
| 6 异步、多线程、任务和并行 | 71-89 | execution model、coordination、fault与parallel break-even |
| 7 成员设计 | 90-101 | construction invariant、public member surface与binding |
| 8 类型设计 | 102-112 | variation、global lifetime、coupling与module modeling |
| 9 安全性设计 | 113-121 | threat/property、crypto/TLS/secret、identity与least privilege |
| 10 命名规范 | 122-139 | namespace/type/member/event的discoverability与compatibility |
| 11 代码整洁 | 140-153 | abstraction、cohesion、knowledge duplication与failure docs |
| 12 规范开发行为 | 154-157 | YAGNI/refactoring、test ownership、version与UI automation |
1-3 Language contracts
4-6 Runtime ownership and execution
7-9 Public design and security boundaries
10-12 Discoverability, local change and delivery evidence切换四段官方路径
五条跨章节主线
Value chain:从Default到Public Type
Ch1定义default/equality/hash,Ch2把它用于Dictionary/HashSet key,Ch3通过generic/variance传播type relation,Ch7-8决定public type是否保持invariant。任何mutable key、default sentinel或narrowed subtype都会在后续边界放大。
Lifetime chain:从Closure到Host Shutdown
Ch3 closure/event保存target,Ch4明确resource ownership,Ch6让Task/thread可取消并由host等待,Ch8检查singleton/global state。泄漏不只来自Dispose遗漏,也来自subscription、fire-and-forget和global cache。
Failure chain:从Cleanup到Caller Action
Ch4 cleanup保证fault下release,Ch5区分Try/exception/cancellation并保留cause,Ch6观察task/parallel faults,Ch11把stable exceptions写入public docs。只在最终decision boundary记录主日志。
Boundary chain:从Query到Permission
Ch2确定IEnumerable/IQueryable execution location,Ch7-8公开最小member/type capability,Ch9进一步区分artifact identity、publisher trust和runtime permission,Ch10给这些边界稳定可搜索的名字。
Delivery chain:从Clean Change到Observable Version
Ch10让symbols可发现,Ch11让change局部、knowledge不重复,Ch12让tests/version selectors/release gates随production一起演进;Ch9补artifact provenance与least privilege。
↡同一个contract在多个章节经历input、state、execution、public API到release的连续producer-to-consumer关系。切换value、lifetime、failure、boundary与delivery
每章统一学习法
每章不以“阅读完成”验收,而使用五步gate:
READ 保留原题与时代背景
PREDICT 写出normal/boundary/fault/lifecycle结果
IMPLEMENT 用最小API表达contract
VERIFY 用可重复evidence证明结果
TRANSFER 在真实review/refactor解释tradeoffchapter evidence = normal path
+ boundary/counterexample
+ fault/cancellation
+ ownership/lifetime
+ current target/runtime context切换read、predict、implement、verify与transfer
推荐节奏与产物
- 第1-3章:建立
value-query-typecontract notebook,完成equality、enumeration、closure/variance tests。 - 第4-6章:绘制ownership/failure/execution flow,完成handle、fault injection、cancellation与benchmark。
- 第7-9章:做public API/threat review,完成substitution、tamper、TLS、deny tests。
- 第10-12章:完成rename/refactor/version演练,建立layered CI和deployed smoke。
本章回顾:从目录锚点走到迁移证据
官方12章与157条原题提供可追溯anchor,四段路径提供依赖顺序,五条cross-chapter chains连接真实故障,read-predict-implement-verify-transfer把理解转成evidence。进入第一章前,应能指出学习目标属于哪条链、最终由哪个consumer和gate验收。
练习
问题 1:为什么官方目录顺序要从语言/集合/泛型走到资源、异常和并发?
问题 2:一个ConcurrentDictionary缓存偶发找不到已插入key,应沿哪条跨章节链审查?
问题 3:怎样证明已经掌握一条旧结论在现代.NET中的适用边界?
术语表
名词解释
本章出现的专业名词,用大白话再讲一遍。
- original-title anchor
- decision boundary
- cross-chapter chain
- evidence gate
- transfer task