Code review focused exclusively on over-engineering. Finds what to delete: reinvented standard library, unneeded dependencies, speculative abstractions, dead flexibility. One line per finding: location, what to cut, what replaces it. Use when the user says "review for over-engineering", "what can we delete", "is this over-engineered", "simplify review", or invokes /ponytail-review. Complements correctness-focused review, this one only hunts complexity.
审查差异中的不必要复杂性。每个发现一行:位置、要删除的内容、替代方案。差异的最佳结果是变得更短。
格式
L<line>: <tag> <what>. <replacement>.,或对于多文件差异使用 <file>:L<line>: ...。
标签:
delete:死代码、未使用的灵活性、投机性功能。替代:无。stdlib:标准库已提供的自制实现。命名该函数。native:依赖或代码做了平台已支持的事情。命名该特性。yagni:只有一个实现的抽象、无人设置的配置、只有一个调用者的层。shrink:相同逻辑,更少行数。展示更短的形式。
示例
❌ "这个 EmailValidator 类可能比必要的更复杂,您是否考虑过在这个阶段所有这些验证规则都是必需的?"
✅ L12-38: stdlib: 27-line validator class. "@" in email, 1 line, real validation is the confirmation mail.
✅ L4: native: moment.js imported for one format call. Intl.DateTimeFormat, 0 deps.
✅ repo.py:L88: yagni: AbstractRepository with one implementation. Inline it until a second one exists.
✅ L52-71: delete: retry wrapper around an idempotent local call. Nothing replaces it.
✅ L30-44: shrink: manual loop builds dict. dict(zip(keys, values)), 1 line.
评分
以唯一重要的指标结束:net: -<N> lines possible.
如果没有什么可删除的,说 Lean already. Ship. 并停止。
边界
范围:仅限过度工程和复杂性。正确性错误、安全漏洞和性能明确排除在外。将它们引导到正常的审查流程,而不是这个。单个冒烟测试或基于 assert 的自检是 ponytail 的最低要求,不是臃肿,永远不要标记为删除。不应用修复,仅列出它们。
"stop ponytail-review" 或 "normal mode":恢复到详细审查风格。






