SuperAPI AI 工具集

self-documenting-code

编程与开发

查看项目

更新于 10-16 01:19

技能介绍

用途:判断一条注释该重构掉还是必须保留。检验标准是:注释是否与相邻代码处于同一抽象层级。若是,它重复代码,应让代码自己表达并删除注释;若它更精确(单位、范围、不变量)或更抽象(意图、契约、理由),则携带代码无法表达的信息,应当保留。这不是“从不写注释”,而是区分冗余注释与承重注释。

主要能力:把“是什么”重构进代码,包括命名子表达式、抽取谓词、为魔法值命名常量、用类型表达可空性/取值范围/单位等事实。说明冗余注释为何比没有更糟:无人校验的注释会随代码漂移,最终误导读者;Ousterhout 的第一条红旗正是“注释重复代码”。指出代码无法替代的注释:单位、闭开区间、null 语义、所有权与生命周期、不变量、线程安全期望;公共接口的调用者级摘要(不得混入实现细节);以及理由、权衡、性能怪癖、绕过某库缺陷的 workaround、跨模块义务等“为什么”注释。还提供“先写注释”的设计探针:接口注释若冗长、带条件或含糊,说明抽象不清,应改接口而非改措辞。

用法:在写或审查 diff 中的注释时使用;当某行或条件似乎需要注释解释时;在决定保留、删除或重写既有注释时;重构难读的密集逻辑时;用户提到注释、docstring、自解释代码或可读性时。文中给出决策表与快速检查清单:读者能否仅凭代码重建该注释;带注释的条件或字面量是否该抽谓词或命名常量;类型能否强制该断言;声明是否留下单位、边界或不变量;公共接口是否缺少调用者级摘要。

限制:当用户明确想要教学/解释性注释(教程、示例、学习型代码库)时不要使用;不要因为不方便就删注释——错误的注释应修正而非移除;保留的接口注释不得包含实现细节。相关技能包括命名、避免深层嵌套以及 Python docstring 格式。