编程基础

编写高质量的代码注释

2023-02-20  本文已影响0人  东方晓

2023-02-21 周二

注释简介

注释就是对代码的解释和说明。注释是开发人员在编写程序时,给一段代码的解释或提示,有助于提高程序代码的可读性。注释不会被计算机编译。

要不要加注释?为什么要加注释?

注释的存在就是为了方便自己的二次阅读和代码维护以及项目交接。可以更好的理解代码,有助于提高协作效率,加快开发进程。
试想,你添加了一段逻辑较为复杂的代码,几个月后再看,还能不能迅速看懂?你刚刚接手一个老项目,项目里基本没有注释且逻辑复杂,你能高效率的看懂代码和了解业务吗?
所以添加注释还是有一定必要的。

快捷键

快捷键 windows: ctrl+/ mac: command+/

不同文件中的注释类型

在HTML中

<div>
      这是一行文字
      <!-- 这是一行被注释的文字 -->
</div>

在CSS中

在.html文件中
<style>
  div {
      /* color: #fff;  */
   }
</style>
在.css文件中
div {
    /* color: #fff;  */
}
在.less或者.scss中
div {
    /* color: #fff;*/  /* 多行注释*/
    // font-size: 14px; // 单行注释
    background: #000;
}

在JS中

单行注释(行注释)

以 // 开头。任何位于 // 之后的文本都会被注释

// 定义一个空数组
var ary = [];
var ary2 = []; // 又定义一个空数组

多行注释(块注释)

以 /* 开头,以 / 结尾。任何位于 / 和 */ 之间的文本都会被注释

/*
    这是多行注释
    定义一个数组
 */
var ary = [];

用注释来阻止代码执行

被注释的 JS 代码将不被执行

//alert("123")  // 执行时未弹出该信息
alert("456")  // 执行时弹出该信息

函数注释

一般以 /** 开头,以 / 结尾。任何位于 /* 和 */ 之间的文本都会被注释

/**
 * 提交
 *
 * @method onSubmit
 * @param {[Object]} 提交数据
 * @return  {[Bollean]}  [返回是否提交成功 ]
 */
const onSubmit = (params = {}) => {
  const result = false;
    if (params) {
            result = true;
        }
    return result;
};

特殊标记注释

TODO在该注释处有功能代码待编写,待实现的功能在说明中会简略说明
FIXME 在该注释处代码需要修正,甚至代码是错误的,不能工作,需要修复,如何修正会在说明中简略说明
XXX在该注释处代码虽然实现了功能,但是实现的方法有待商榷,希望将来能改进,要改进的地方会在说明中简略说明
NOTE在该注释处说明代码如何工作
HACK在该注释处编写得不好或格式错误,需要根据自己的需求去调整程序代码
BUG在该注释处有 Bug

// TODO功能未完成,待完善
// FIXME  待修复
// XXX    实现方法待确认
// NOTE   代码功能说明
// HACK   此处写法有待优化
// BUG    此处有 Bug
const arr = []

注释写法规范

文件注释

位于文件头部,一般包含概要、作者、版本改动信息以及修改时间等内容

  /*
   * 简述当前文件功能
   * @author 作者名称
   * @version 版本号 最近编辑时间
   * @description 该版本改动信息
   */

单行注释

总是在 // 后留一个空格

  // 这是一行注释

多行注释

总是保持星号纵向对齐(结束符前留一个空格)
不要在开始符、结束符所在行写注释
尽量使用单行注释代替多行注释
注释函数时,推荐使用多行注释

  /*
    这里有一行注释
    这里有一行注释
    这里有一行注释
   */

函数注释

其间每一行都以 * 开头,且与第一行第一个 * 对齐
注释内容与 * 间留一个空格
必须包含标签注释。例:

/**
* 方法说明
* @method 方法名
* @for 所属类名
* @param {参数类型} 参数名 参数说明
* @return {返回值类型} 返回值说明
*/

注释常用标签用法

@type {typeName}

/**
* @type {number}
*/
var foo1;

/**
* @type {*}
* @desc 任何类型
*/
var foo2;

/**
* @type {?string}
* @desc string或者null
*/
var foo3;

@param {} name - some description
非必传参数需给参数名加上 []
参数如有默认值需用 = 表示
如果参数是 Object,可继续用 @param 对其属性进行详细说明
若干个参数用 ... 表示

/**
 * @func
 * @desc 一个带参数的函数
 * @param {string} a - 参数a
 * @param {number} b=1 - 参数b默认值为1
 * @param {string} c=1 - 参数c有两种支持的取值  1—表示x  2—表示xx
 * @param {object} d - 参数d为一个对象
 * @param {string} d.e - 参数d的e属性
 * @param {object[]} g - 参数g为一个对象数组
 * @param {string} g.h - 参数g数组中一项的h属性
 * @param {string} [j] - 参数j是一个可选参数
 */
 function foo(a, b, c, d, g, j) {}

/**
 * @func
 * @desc 一个带若干参数的函数
 * @param {...string} a - 参数a
 */
function bar(a) {}

IE条件注释(IE5+)

IE 条件注释分为以下几种情况:

只允许 IE 解释执行
只允许 IE 特定版本解释执行
只允许非 IE 特定版本执行注释
只允许高于或低于 IE 特定版本执行注释

 <head>
    <title>IE 条件注释</title>
  
    <!-- 是 IE 时 -->
    <!--[if IE]> 
        <link href="style.css" rel="stylesheet" type="text/css" />
    <![endif]-->
  
    <!-- 是 IE 7 时 -->
        <!--[if IE 7]>
       <link href="style.css" rel="stylesheet" type="text/css" />
    <![endif]-->
 
    <!-- 不是 IE 7 时 -->
    <!--[if !IE 7]>
        <link href="style.css" rel="stylesheet" type="text/css" />
    <![endif]-->
  
    <!-- 大于 IE 7 时 -->
    <!--[if gt IE 7]>
       <link href="style.css" rel="stylesheet" type="text/css" />
    <![endif]-->
 
    <!-- 小于 IE 7 时 -->
    <!--[if lt IE 7]>
       <link href="style.css" rel="stylesheet" type="text/css" />
    <![endif]-->
</head>

作者:政采云前端团队
原文链接

感觉这篇文章特别实用,mark一下。

上一篇下一篇

猜你喜欢

热点阅读