小程序不写注释,三个月后自己都看不懂
很多开发者觉得小程序代码量不大,注释写不写无所谓。这种想法在项目初期确实看不出问题,但一旦涉及到版本迭代、多人协作,甚至是你自己一个月后回头改代码,你就会发现——没有注释的小程序,就像一本没有页码的字典,明明每个字都认识,但就是找不到你要的那条信息。
先讲一个我在本地社群运营中遇到的真实案例。去年有个做本地生鲜配送的小程序团队,老板为了赶上线,要求程序员“先跑起来再说”。三个月后,小程序用户量涨到了两万,但老板想加一个“拼团返现”功能。结果原来的程序员离职了,新来的程序员打开代码一看,满屏的变量名都是a、b、c、temp1、temp2。光是一个“用户积分计算”的逻辑,就嵌套了四层if-else。新程序员花了整整两周才理清楚原有逻辑,最后改完上线,还因为漏掉了一个边界条件,导致部分用户积分被清零,直接引发了一波客诉。这个教训的代价,是那家生鲜店花了八千块做用户安抚,还丢掉了十几个老客户。
你可能会说,那是小公司不规范。但我要告诉你,哪怕你是一个人在做小程序,不写注释同样会坑到自己。很多单干的开发者在接外包项目时,经常出现一种情况:客户说“这里小改一下”,你打开自己三个月前写的代码,看着那个叫“getData”的函数,完全想不起来里面那个“flag”变量到底是用来控制加载状态,还是用来判断用户权限的。你不得不从头到尾把代码跑一遍才能确认。这种时间浪费,一次两次还能忍,多了之后你的开发效率会直线下降,直接影响你接单的数量和单价。
那注释到底该怎么写,才能既省时间又有实际价值?我这里不讲那些“每个函数都要写注释”的教条,而是分享三个我在本地化项目实战中总结出来的方法。
第一个方法:注释只写“为什么”,不写“是什么”。很多初学者喜欢写“// 定义变量a”,这种注释等于没写。真正有价值的注释,是解释你为什么要这么写。比如你写了一个延迟加载图片的逻辑,注释应该是“// 这里延迟300毫秒是因为用户快速滑动时,如果立即加载会造成卡顿,300毫秒是本地测试出来的最优值”。这种注释,未来不管是别人还是你自己看,都能立刻明白当时的决策背景,而不是再去猜。
第二个方法:用注释标记“坑位”。小程序开发中经常会遇到一些奇怪的兼容性问题,比如某些安卓机型的微信版本不支持某个API,或者某个第三方插件的bug需要绕过去。这些信息如果不写注释,下一次遇到同样的坑,你又要花半小时去查。我自己的习惯是,在代码里直接写“// 坑:华为Mate 30 Pro在微信8.0.20版本下,这个接口会返回undefined,所以加了一个fallback”。这种注释,一次写完,终身受益。而且当你把这些坑位整理出来,甚至可以变成你团队内部的知识库,新来的同事看一眼就能避开你踩过的雷。
第三个方法:用注释做“版本日志”。很多小程序的迭代更新非常频繁,有时候今天改了一个逻辑,下周又改回去了。如果没有注释,你根本不知道哪一版是对的。我的做法是,在关键函数或者页面的顶部,用注释记录修改历史。比如“// v2.3.1 修改:修复了用户从商品详情页返回首页时,搜索框状态未重置的问题。修改人:张三,日期:2024-03-15”。这样当你发现某个功能出了问题,直接看注释就能知道是谁改的、为什么改的,不用再去翻git记录。
说到这里,你可能觉得写注释会增加工作量。其实恰恰相反,真正花时间的不是写注释,而是读没有注释的代码。我算过一笔账:一个平均复杂度的小程序页面,写注释大概多花5分钟,但不写注释,未来每次维护至少多花30分钟去回忆和排查。按一个页面迭代5次来算,写注释的投入产出比是1:30。这个账,算清楚之后,你就知道该怎么做了。
另外,我建议你在小程序的公共组件和工具函数里,强制要求自己写注释。因为这些地方是代码复用的核心,一旦写错或者逻辑不清晰,影响的是整个项目的多个页面。比如你写了一个“格式化手机号”的工具函数,注释里应该写明“// 支持11位手机号自动加空格,兼容170、199等号段,如果传入空字符串则返回‘——’”。这样其他页面调用的时候,不用看函数体就知道它的行为边界。
最后说一个忽略的点:注释的语言风格。不要用那种特别正式、像教科书一样的语言。用你平时说话的方式写,甚至可以用一点本地化的表达。比如你在成都做小程序,注释里写“// 这个弹窗只在用户点了‘巴适’按钮后才出现”,读起来就特别亲切,也更容易记住。注释是给活人看的,不是给机器看的,自然一点反而更高效。
如果你现在正在做一个新项目,我建议你从第一个页面开始就养成写注释的习惯。不要等到项目大了再补,那时候补注释的工作量比写代码还大。而且你会发现,当你把注释写清楚之后,客户或者老板问你某个功能是怎么实现的,你直接复制注释给他看,沟通成本一下子就降下来了。这对于那些想把小程序当做长期生意来做的开发者来说,绝对是一个能帮你赚到回头客的好习惯。

