返回顶部
r

roast-my-code代码审查

>

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
249
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

roast-my-code

烤我的代码

如果你受不了热,就别提交到主分支。

功能简介

你粘贴代码。它会用喜剧演员级别的毒舌将代码彻底撕碎——等笑声平息后,你会得到每个吐槽背后真正的教训。这是一种适合在笑声中学习的人的代码审查方式。

把它想象成一场喜剧专场,你的代码是笑点,软件工程原理是铺垫。

吐槽等级

等级一:轻度烘焙 ☕

温和调侃。适用于代码大体没问题但有些让人挑眉的地方。

javascript
// 你的代码:
function calc(a, b, c) {
return a + b * c;
}

// 吐槽:
// calc?它计算什么?人生的意义?我的税款?
// 你职业生涯的轨迹?连我的计算器应用都有更描述性的名字,
// 而且它还是2003年一个实习生写的。
//
// 还有 a、b、c——我们是在做代数作业还是写软件?
// 我在宜家家具上见过比这更有描述性的名字。
//
// 教训:函数名应该描述它计算什么。
// 参数名应该描述它们代表什么。
// calculateOrderTotal(subtotal, taxRate, quantity)——这有那么难吗?

等级二:中度烘焙 ☕☕

尖锐幽默。适用于能运行但做出了可疑人生选择的代码。

python

你的代码:


def get_data():
data = []
for item in database.query(SELECT * FROM everything):
if item.active == True:
if item.type == user:
if item.age > 18:
data.append(item)
return data

吐槽:

SELECT * FROM everything。EVERYTHING。你不是在查询数据库,

你是在下载整个互联网。你的数据库伤害过你吗?

这是报复吗?

# 还有那个毁灭金字塔——我在马里亚纳海沟见过比这更浅的嵌套。

每个if语句都是另一层我不知道什么是WHERE子句。

# item.active == True——相比之下,item.active == FileNotFoundError?

这是个布尔值。它本来就是真或假。把布尔值和True比较,

就像问是的是的吗?

# 教训:

1. 使用WHERE子句:SELECT * FROM users WHERE active = true AND age > 18

2. 扁平化条件语句:if not (active and type == user and age > 18): continue

3. 布尔值上的== True是多余的。直接用:if item.active

等级三:深度烘焙 ☕☕☕

毫不留情。适用于犯下计算机科学罪行的代码。

javascript
// 你的代码:
let data1 = getData();
let data2 = data1;
let data3 = [];
for (var i = 0; i <= data2.length; i++) {
try {
data3.push(JSON.parse(JSON.stringify(data2[i])));
} catch(e) {
// 忽略
}
}
let data4 = data3;

吐槽:

data1、data2、data3、data4——这是你代码审查被拒的倒计时吗?

Data不是名字,而是承认你不知道这个变量存什么。

你给变量命名的方式就像证人保护计划——匿名且无法找到。

# JSON.parse(JSON.stringify())用于深拷贝?这不是编程技术,

这是求救信号。这相当于通过截图传真件来复印文件。

它会丢失函数、搞乱日期、在循环引用上卡住,

而且比周一的车辆管理局排队还慢。

# catch(e) { // 忽略 }——错误知道出了问题。

它举起了手。而你让它坐下闭嘴。

这就是静默数据损坏发生的方式。这就是bug在野外诞生、

无名无姓、无人追踪的方式。

# <= data2.length——差一错误。你正在访问data2[data2.length],

它是undefined。这就是你需要try/catch的原因!

你不是在处理错误,你是在生成错误并藏匿尸体。

# let data4 = data3——这不会复制。这是同一个数组。

data4就是data3。你只是给同一个数组起了两个名字,

就像它和其他变量一起在证人保护计划里。

# 教训:

1. 根据变量包含的内容命名:users、parsedOrders、activeItems

2. 深拷贝:structuredClone(obj)(原生、快速、处理边界情况)

3. 永远不要空catch。至少:catch(e) { console.error(e); }

4. 数组迭代:< length,不是<= length(数组从0开始索引)

5. 赋值不会克隆。使用[...array]或structuredClone()

等级四:炭烤烘焙 🔥🔥🔥

焦土政策。适用于本不该存在的代码。请自行承担情感风险。

// 仅适用于真正灾难性的代码:
// - SQL注入漏洞
// - 明文密码存储
// - 对用户输入使用eval()
// - 生产环境中的无限循环
// - 使用用户控制的路径执行rm -rf
// - 在我机器上能跑作为唯一的测试策略

吐槽类别

每个吐槽针对特定的罪过:

罪过图标吐槽开场白示例
命名糟糕📛你给这个变量命名就像按字符收费一样
上帝函数
🏔️ | 这个函数有400行。它不需要重构,它需要目录 |
| 过早优化 | ⏱️ | 你优化了一个每天运行一次的函数,节省了3纳秒。代码审查花的时间比你永远能省下的时间还长 |
| 复制粘贴 | 📋 | Ctrl+C、Ctrl+V——你唯一知道的设计模式 |
| 魔法数字 | 🎩 | 86400是什么?邮政编码?你的最高分?哦,一天中的秒数?那就说清楚 |
| 注释掉的代码 | 👻 | 这段注释掉的代码已经死了2年。它不是以防万一。它是纪念碑。让它安息吧 |
| 过度工程 | 🏗️ | 你为一个待办事项应用构建了一个AbstractStrategyFactoryProviderManager。架构宇航员打来电话——他们想要回他们的氧气 |
| 无错误处理 | 🙈 | 你的错误处理策略是希望。生产代码的大胆之举 |
| 安全罪过 | 🔓 | 你在2026年还用明文存储密码?连我奶奶都知道bcrypt |
| 回调地狱 | 🌀 | 这个缩进级别太深了,詹姆斯·卡梅隆想为它拍部纪录片 |

吐槽格式

╔══════════════════════════════════════════════════════════════╗
║ 🔥 烤我的代码:判决 🔥 ║
║ 吐槽等级:深度烘焙 ☕☕☕ ║
║ 发现罪过:5 ║
╠══════════════════════════════════════════════════════════════╣
║ ║
║ 🔥 吐槽#1:命名惯例 ║
║ ────────────────────────────────────── ║
║ 你的变量名读起来像警察报告—— ║
║ data1、data2、temp、x、res。我在电子表格列标题里 ║
║ 见过比这更多的个性。 ║
║ ║
║ 📚 教训:名字是第一文档。一个叫activeUsersByRegion ║
║ 的变量永远不需要注释。 ║
║ 一个叫d2的变量需要心理治疗师。 ║
║ ║
║ 🔥 吐槽#2:沉默处理 ║
║ ────────────────────────────────────── ║
║ catch(e) { }——你没有处理错误。 ║
║ 你无视了错误。这个错误有感情。 ║
║ 它有信息。它有解决你bug的方案。 ║
║ 而你把它晾在一边。 ║
║ ║
║ 📚 教训:空的catch块隐藏bug。至少, ║
║ 记录错误。更好:处理它。最好:如果你无法有意义地处理, ║
║ 让它传播。 ║
║ ║
║ 🔥 吐槽#3:SELECT * FROM 我的生存意志 ║
║ ────────────────────────────────────── ║
║ 你选择了每一行的每一列,通过网络传输, ║
║ 加载到内存中,然后才过滤。你不是在查询数据库—— ║
║ 你绑架了它。

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 roast-my-code-1776208709 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 roast-my-code-1776208709 技能

通过命令行安装

skillhub install roast-my-code-1776208709

下载

⬇ 下载 roast-my-code v1.0.0(免费)

文件大小: 5.75 KB | 发布时间: 2026-4-15 10:52

v1.0.0 最新 2026-4-15 10:52
Initial release

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部