第四章:代码注释学——程序员的精神涂鸦

0 阅读3分钟

2008年的代码注释,根本不是用来解释代码的,而是程序员的“精神涂鸦”,完全取决于当时的心情和精神状态——没有AI帮你写规范注释,也没有公司要求,注释写得好不好、对不对,全看自己开心。

我见过最离谱的注释,是老周的。老周是我们公司的技术骨干,三十五岁,头发还剩一半,戴一副厚厚的黑框眼镜,写代码的时候喜欢嚼干茶叶——不是泡茶喝,是把干茶叶直接放嘴里嚼,嚼得津津有味,说是“提神醒脑,写代码不报错”。

老周负责公司的核心系统——一个进销存软件,代码量大概五万行,全是C# WinForms。这个系统是公司的命脉,所有客户都在用,但没有一个人敢动它的代码,因为里面的注释,堪称“当代程序员精神状态实录”:

// 我也不知道这段代码是干什么的,但是删了就会崩,求求你不要删
private void Button1_Click(object sender, EventArgs e)
{
    // 李同学改于2007年6月,改完之后就离职了,阿弥陀佛,别找我
    SomeWeirdFunction();
    
    // 以下是老周加的,2008年3月,那天我媳妇跟我吵架,心情不好,代码可能很暴躁,见谅
    for(int i = 0; i < 100; i++)
    {
        // 操,又报错了
        DoSomethingStrange(i);
        // 操操操,还报错
        DoSomethingEvenStranger(i);
    }
    
    // 如果你看到这行注释,说明你也是被逼无奈才来看这段代码的,兄弟,保重,我先溜了
}

还有一段注释,至今被我们奉为“注释界的经典”,每次看都能笑喷:

// 这个bug修了三天,最后发现是少了一个花括号。
// 一个花括号,三天。
// 这三天里,我女儿学会叫爸爸了,我却在修一个花括号。
// 人生啊,就是这么离谱。

我自己的注释也好不到哪里去。有一次我写了一个非常复杂的SQL查询,里面套了三层子查询,写完我自己都看不懂,调试了半天终于能跑了,于是我在上面加了一行注释:

// 这个SQL能跑,别问为什么,问就是量子力学,问就是玄学

没想到,这个注释后来被客户看到了。客户专门打电话给钱总,语气带着笑意:“你们程序员挺有幽默感啊,还量子力学呢。”

钱总挂了电话,黑着脸找到我:“你能不能写点正经的注释?比如‘此方法用于获取新闻列表’这种,别整那些花里胡哨的!”

我连忙点头:“好嘞好嘞,下次一定。”

第二天,我写了一行注释,严格按照钱总的要求来:

// 此方法用于获取新闻列表。如果你正在读这行注释,说明你的职业生涯可能也遇到了一些困难,加油,挺住。

钱总看到后,沉默了很久,再也没提注释的事——我猜,他是被我整无语了。