导学:官方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-15conversion、default、equality、representation与runtime binding
2 集合和LINQ16-31collection shape、ownership、query execution与枚举成本
3 泛型、委托和事件32-45type relationship、closure/event lifetime与variance
4 资源管理和序列化46-57deterministic cleanup、native fallback与versioned wire state
5 异常与自定义异常58-70failure taxonomy、stack provenance、boundary与log ownership
6 异步、多线程、任务和并行71-89execution model、coordination、fault与parallel break-even
7 成员设计90-101construction invariant、public member surface与binding
8 类型设计102-112variation、global lifetime、coupling与module modeling
9 安全性设计113-121threat/property、crypto/TLS/secret、identity与least privilege
10 命名规范122-139namespace/type/member/event的discoverability与compatibility
11 代码整洁140-153abstraction、cohesion、knowledge duplication与failure docs
12 规范开发行为154-157YAGNI/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
分步1 / 3

切换四段官方路径

五条跨章节主线

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。

分步1 / 3

切换value、lifetime、failure、boundary与delivery

每章统一学习法

每章不以“阅读完成”验收,而使用五步gate:

READ       保留原题与时代背景
PREDICT    写出normal/boundary/fault/lifecycle结果
IMPLEMENT  用最小API表达contract
VERIFY     用可重复evidence证明结果
TRANSFER   在真实review/refactor解释tradeoff
chapter evidence = normal path
                 + boundary/counterexample
                 + fault/cancellation
                 + ownership/lifetime
                 + current target/runtime context
分步1 / 3

切换read、predict、implement、verify与transfer

推荐节奏与产物

  1. 第1-3章:建立value-query-type contract notebook,完成equality、enumeration、closure/variance tests。
  2. 第4-6章:绘制ownership/failure/execution flow,完成handle、fault injection、cancellation与benchmark。
  3. 第7-9章:做public API/threat review,完成substitution、tamper、TLS、deny tests。
  4. 第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

讨论

评论区加载中…