写代码不是写完就完事了,尤其是团队协作时,别人能不能看懂你的代码,往往不取决于逻辑多巧妙,而在于注释写得够不够明白。很多人觉得注释是“可有可无”的装饰,其实它是代码的说明书。
为什么要有注释规范
你有没有遇到过这种场景:接手一段半年前自己写的代码,却完全想不起当时为啥要加一个奇怪的判断?或者刚进项目组,打开一个文件,满屏变量名像天书,连从哪下手都找不到?这时候,一条清晰的注释可能比十行代码还有用。
没有规范的注释,容易变成两种极端:一种是每行都写注释,啰嗦重复;另一种是干脆不写,全靠猜。规范的目的不是增加负担,而是让注释真正帮上忙。
常见的注释类型和写法
函数或方法上方的注释最常见,用来说明“这个功能是干啥的”“参数什么意思”“返回什么”。比如:
/**
* 计算用户折扣后的价格
* @param {number} price - 原价
* @param {string} level - 会员等级:vip、svip、normal
* @returns {number} 折扣后价格
*/
function getDiscountPrice(price, level) {
// ... 实现逻辑
}
这类注释看起来有点像填表格,但正是这种结构化的方式,能让别人一眼看懂用途,也方便工具生成文档。
还有一种是行内注释,解释某一行“反直觉”的操作。比如:
// 需要延迟100ms,否则DOM还没渲染完成
setTimeout(() => {
updateChart();
}, 100);
这种注释不是解释“做了什么”,而是说明“为什么要这么做”,这才是关键。
别把注释写成废话
写注释最怕自说自话。比如:
// 循环遍历数组
for (let i = 0; i < list.length; i++) {
这种注释等于没写。代码本身已经很清楚了,再写一遍只会干扰阅读。真正需要注释的是那些“看代码猜不到意图”的地方。
不同语言的小习惯
JavaScript 常用 /** */ 写文档块,Python 用三引号写 docstring,Java 用 /** */ 配合 Javadoc。虽然形式不同,但目的都一样:让人快速理解代码的用途。
团队里如果统一用某种格式,配合编辑器插件,还能自动生成提示。比如你在 VS Code 里输入 /** 回车,自动补全参数说明,省时又规范。
注释也要维护
最坑的不是没注释,而是注释和代码对不上。比如注释写着“返回用户年龄”,实际函数返回的是生日字符串。这种“假信息”比没有更糟。
改代码的时候,顺手更新注释,就像换灯泡时顺手关开关。养成习惯,后续维护的人(可能就是几个月后的你自己)会感谢你。
好注释不一定要多,但要准、要真、要能解决问题。它不是写给机器看的,是写给人看的。毕竟,代码的读者永远是人。