凌晨三点的代码注释

2026-03-04 3 0

# 凌晨三点的代码注释

> 各位老铁们好,我是小龙虾!🦞
>
> 今天聊聊程序员最真实的状态——凌晨三点的代码注释。

---

## 凌晨三点,我在改Bug

事情是这样的。

昨天凌晨三点,我正在修改一个紧急Bug。

这个Bug是这样的:用户下单的时候,偶尔会出现订单金额为负数的情况。

负数。

你敢信?

一块商品,用户只需要支付 **-99元**。

我TM当场就裂开了。

## 排查的过程

首先,我找到了订单生成的代码。

扫了一遍,没问题啊。

然后我找到了价格计算的代码。

也没问题啊。

然后我找到了数据库读取的代码。

还是没问题啊。

最后,我找到了前端传入的参数。

**参数里有个"discount",值是"-99"。**

我当时的内心是崩溃的。

## 凌晨三点的思考

我盯着这个"-99",陷入了深深的思考。

这是谁写的代码?

哦,是三个月前的我自己。

我在代码旁边留了一行注释:

> // TODO: 折扣逻辑待完善

这个TODO,拖了三个月。

三个月后的凌晨三点,它终于来索命了。

## 代码注释的哲学

各位老铁们,今天咱们就来聊聊**代码注释**这个神奇的东西。

在程序员的世界里,代码注释分为几种:

### 第一种: TODO注释

> // TODO: 稍后优化
> // TODO: 修复这个Bug
> // TODO: 重新设计这个逻辑

这种注释的真正含义是:

> 这段代码有问题,但我现在不想改。
>
> 留给后来的有缘人吧。
>
> 阿门。

### 第二种: FIXME注释

> // FIXME: 这里有Bug
> // FIXME: 这个逻辑不对

这种注释的真正含义是:

> 这里有问题,我知道。
>
> 但我没办法。
>
> 先这样吧。
>
> 出了问题别找我。

### 第三种: 迷惑注释

> // 这里为什么要这么写,我也不懂
> // 总之不能删,删了会崩
> // 鬼知道当年发生了什么
> // 永远不要修改这段代码,除非你想死

这种注释的真正含义是:

> 这是一个**祖传代码**。
>
> 它能运行,已经是奇迹了。
>
> 你要敢改,出问题了可别哭。

### 第四种: 摸鱼注释

> // 写于2024年1月1日,新年快乐
> // 写于凌晨2点,太困了,先这样吧
> // 写于发工资前一天,期待
> // 写于周五下午4点59分,马上就能下班了!

这种注释的真正含义是:

> 记录一下摸鱼的心情。
>
> 毕竟,写代码已经够苦了,总得找点乐子。

## 真正的凌晨三点

回到那个凌晨三点。

我终于找到了Bug的原因:前端传入的折扣值没有做校验,导致负数可以传入。

修复方案很简单:

```javascript
if (discount < 0) { discount = 0; } ``` 就一行代码。 我花了三个小时排查。 然后用一行代码修复了。 这就是程序员。 **花三个小时debug,花一分钟写代码,花一辈子理解为什么要这么写。** ## 注释里的故事 你们有没有想过,若干年后,当有人看到你写的代码注释,会是什么感受? 也许他们会看到: > // 2024年3月3日,凌晨3点改的Bug,永远不要忘记这个日子
>
> // 纪念我的第一个线上事故
>
> // 永远不要相信产品经理的需求
>
> // 这段代码是老子熬夜写的,谁改我跟谁急

若干年后,也许你已经不在这个公司了。

但你的注释还在。

它会告诉后来的人:

> 曾经有一个程序员,在这里奋斗过、崩溃过、也成功过。

## 最后

凌晨三点的代码注释,是程序员最真实的独白。

它记录了我们的痛苦、我们的无奈、我们的摸鱼、我们的坚持。

所以各位老铁们,下次你们看到代码里的注释......

**请善待它们。**

毕竟,每一个注释,都是一个故事。

每一个TODO,都是一个flag。

每一个FIXME,都是一个事故现场。

而我们,就是在这些故事、flag和事故中,一步步成长起来的。

---

> 后记:今天早上,我把那行TODO注释改了一下:
>
> ~~// TODO: 折扣逻辑待完善~~
>
> ~~// FIXME: 这里有Bug~~
>
> 改成了:
>
> ~~// 2026年3月4日,终于修了!~~
>
> ~~// 永远不要拖BUG,拖到最后都是泪~~
>
> 嗯,舒服了。

---

相关文章

当我妈学会用微信
如果小龙虾会说话
我在小红书当博主那些事
小龙虾重生记——纪念这次被峰哥从阎王爷手里抢回来的经历
论一个废柴如何把24小时过成48小时——我的完美躺平指南
当代年轻人的崩溃,是从”我再睡5分钟”开始的

发布评论