前端注释怎么写?

3,417 阅读4分钟

这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战

前言

相信很多初入程序员这行的人不清楚为啥要写注释,写了有啥作用,浪费时间和精力。也有很多大神会讲到,好的代码是有很好的解释作用的,不需要注释。那今天就聊一下该不该写注释,我们又该怎么写这件事儿。

注释语法

首先复习一下前端三大件中的基本注释是怎么写的。

html注释

// html 注释
<!-- 但行注释 -->
<!--
多行注释
@name:(模块名称)
@description: add annotation doc(模块描述)
@ author: hecate (模块作者)
-->

css注释

/**
/*
* 文件顶部注释
* @description: XXX中文说明
* @author: hecate.zhu
* @update: hecate.zhu(2021-03-11 15:24)
*
*/
.cass{
    display: inline;
}

/*模块注释*/
/* module: module1 by hecate.zhu*/

/*单行注释*/
/* this is a short comment */

/*
* 多行注释
* this is a short comment 1
* this is a short comment 2
*/

/* 特殊注释 */
/* TODO: xxx by hecate 2021-03-11 15:27*/
/* BUGFIX: xxx by hecate 2021-03-11 15:27*/

js注释:

// js 注释
// 单行注释: 
/* 多行注释   */

/*  
*  段落注释 模块注释 方法注释:
*  这里是一段注释
*  这里的注释可以连写多行
*/

How and Why

好的代码应该具备很好的可读性,但是代码可以描述 how,但它不能解释 why。注释应该写什么呢?

很明显的是,注释首要功能是阐述为什么写这段代码,也就是why,需要阐述的内容有阐述这个模块的直接缘由,这个模块的主要作用,实现了什么,如果你的出入参数不明确,应该详细的解释参数的类型以及含义。

其次,你的注释应该对晦涩难懂的代码部分,依赖的其他语法和模块的部分进行特殊说明,如果你的代码有特定的使用场景也需要特别说明,比如说依赖于jq1.21以上的版本。

eg1:以下注释写明了方法的作用,适用的场景,参数的类型、字段以及含义,隶属父类
  /** 
     * 查询订单 支付确认页会用到
     *  @param {number} productId 商品id
     * @memberof orderController
     */
eg2:主要阐述了方法作用,使用建议,适用场景;
// 更新用户存储信息,建议存储到cookie一份,用于网关的请求
eg3 :针对方法的可能值给出了详尽的枚举,用于更好的分析判断代码部分
// type 枚举: 'Mobile Safari' ; 'WeChat' ; 'App' ; 'QQ' ; 'ali' ;
eg4css模块注释,相比而言css注释简单的多,一般只需要将模块注释或者hack或者特殊的部分扼要说明即可;
/* 面板样式*/
.m-panel{
  background:#fff;
  padding-left:.30rem;
  margin-bottom:.20rem;
}
eg5html的注释一般是针对页面结构层或者功能模块层进行注释,只建议针对特殊的部分,较大单独的模块进行注释;
 <!-- m-title 头部模块 -->
 <div :class="['m-title', (os=='iOS'&&uatype=='App')?'ios':'']"></div>

其他需要写注释单原则(场景)

  • 澄清一些普通人无法辨认单东西,比如长单正则验证,一些复杂的设计原理。
// 手机验证正则,除了变量命名规范,也建议真滴匹配的思想描述下,如:验证13、14、15、17、18、19开头的11位的手机号码
 let phoneReg=/^((13[0-9])|(14[0-9])|(15([0-9]))|(18[0-9])|(17[0-9])|190)\d{8}$/
  • 书单章节一样注释,除了个别的方法以外,针对章节性的,具有连贯性单几个方法也要写下章节注释。
//以下 xx1,xx2,xx3方法实现登录逻辑
  • 编写代码时保持逻辑顺畅的指南
// 判断是否需要登录
//需要登录,=> 登录验证token ,=> token有效继续执行  或 无效跳转登录
// 不需要登录=> 直接跳转
  • 可以重构,开发中的技术债务可以通过注释标明便于以后单重构或者清除
// this isn't my best work, we had to get it in by the deadline
  • 作为教学或者维护或者后期迭代开发的重要参考
// 垂直居中解决方案
.par{
    display:table
}
.par .sub{
    display:table-cell;
    vertical-align:middle;
}
  • 逻辑复杂
  • 有一定的问题,待加补丁

总结

你还觉得注释没用吗,无论作为新手还是大神,如果想保留并继续使用自己有价值单代码,针对自己团队技术水平和代码的用途,写注释都是很有必要的哦。