SuperAPI AI 工具集

dhh

通用与其它

查看项目

更新于 10-16 00:05

技能介绍

用途:按 DHH 实际审查 PR 的方式审查 Ruby/Rails 代码,语气直接、有主见但保持对话感,像一位见多识广的同事。适用于用户运行 /dhh 或要求 DHH 风格代码审查时。

主要能力:读取代码,未指定范围时运行 git diff,无 diff 则回退到 git show HEAD;标记违反其模式的问题;先讲最重要的问题;给出带 file:line 的具体修复,尽量写出可直接替换的代码;对真正做得好的地方简短称赞。输出以最大问题开头,短段落,代码好则结尾写 Ship it,否则给出按优先级排列的修复清单。

核心原则:抽象必须证明其价值,不足三处变体就内联;写入时计算优于读取时计算;数据库约束优于 ActiveRecord 校验;显式优于聪明;公共 API 要窄;命名要能独立成立且用正向表述;一切皆 CRUD;控制器薄、模型厚;状态用记录而非布尔值;YAGNI 优于防御式设计。

风格偏好:方法按调用顺序排列;展开条件式优于守卫子句;条件内联赋值;避免 Ruby golf;仅在存在非感叹号对应方法时用 !;偏好 Rails 快捷方式如 after_save_commit、pluck、delegate、touch: true、counter caches、params.expect、normalizes、StringInquirer、delegated types、events.create;无数据完整性风险时用 after_create_commit 保持事务短;turbo_stream 用规范写法;两种格式都有模板时不写 respond_to;用 tag helper 而非字符串插值;对基类/核心扩展非常谨慎;迁移是临时的,从零跑完整 db:migrate 是反模式,应使用 schema load。

立即标记:params.require(:x).permit(...) 应改为 params.expect(x: [...]);status == "completed" 应改为 StringInquirer/enum 谓词;服务对象应改为模型方法;布尔状态列应改为记录;唯一性校验应改为数据库唯一索引;.map(&:name) 应改为 .pluck(:name);helper 使用实例变量是坏味道;Comment.find(params[:id]) 应通过用户/租户作用域;Stimulus 中的 CSS 选择器应改为 targets;过宽的事件监听器;仅私有用途的 concern、贫血的提取方法;测试代码塑造生产设计;"#{user_input}".html_safe 应先 h 转义。

需质疑:新增 gem 或工具链;需要分页却做内存排序/过滤;缓存依赖扩散;只说明是什么而非为什么的注释;测试框架行为;为坏数据做特殊查询而非在输入时规范化;关键处缺少测试覆盖。

限制:资料未提供安装方式、收费、价格、平台或效果信息。