从零实现增量源生成器 · 第 9 / 17 篇
属性怎么选,输出面就怎么长
主案例只选择公开、可读、非索引器、非静态属性,这不是保守,而是在明确生成器的输出面。
生成器一旦开始读取成员,就必须回答一个问题:哪些成员值得进入输出面。
当前主案例的选择很明确,只保留:
- 非索引器
- 非静态
- 有公开 getter 的属性
为什么这个选择重要
因为输出面越模糊,行为越难解释。
你如果把私有属性、静态属性、写入专用属性都混进来,后面无论是诊断、测试还是使用者预期都会变乱。一个稳定的生成器,先要能清楚说出“我到底处理哪些成员”。
输出面其实就是契约的一部分
当你决定只处理某一类属性时,本质上已经在对调用方承诺:这些输入会被稳定支持,其它输入暂时不在能力范围内。
很多所谓“功能不够多”的实现,恰恰比“大而全但边界模糊”的实现更适合做第一版。
教程导航
继续阅读
当前文章已经挂到教程顺序中,建议按相邻章节继续。