HarmonyOS Next 项目级别的注释规范
程序员箴言
我最讨厌世界上的两种人:
- 第一种是不写注释的人
- 第二种是让我写注释的人
前言
随着HarmonyOS NEXT的发展加快,不少的公司已经陆续加大了资源来开发软件项目。那么伴随项目的发展,项目团队也需要按照一定
的规范来编写项目注释或者代码的说明文档。
我认为编写项目注释或者代码的说明文档最小的代价就是 直接通过编写注释的方式来实现代码的使用文档。
目前主流的IDE都会支持 jsDoc 或者 TypeDoc。 我们按照规定的格式编写代码注释,便能获得以下好处:
当我们想要调用 全局函数 px2vp时,提示工具会很清晰的给我展现出相关的使用说明。另外,如果是编写一个工具类库,还能基于相关工具生成好看的说明文档。
Person.ets
/** * 一个工具人类 * * @since 11 */ export class Person { /** * 年龄 */ age: number = 18 /** * * 计算两个年龄相加的和 * @param {number} n1 年龄1 * @param {number} n2 年龄2 * @returns {number} 总年龄 */ calcAge(n1: number, n2: number) { return n1 + n2 } }
DevEco Studio 自带的语法提示
jsDoc提供了对 常量、类、函数、接口、枚举等的修饰符,一般情况下不需要主动添加,因为 DevEco Studio 可以自动识别
@constant @class @function @interface @enmu 等
类
枚举
并且,在你引入代码提示的时候,也可以直观的观察这里来判断它是什么类型
常见代码提示修饰符
如图,如果我们想要实现上图右侧的一些语法提示功能,那么就需要自己编写合适的代码提示修饰符了
通过编写一个类来演示,首先我们提供以下基本结构
export class Person { age: number = 18 protected static async calcAge4(n1: number, n2: number) { return n1 + n2 } calcAge1(n1: number, n2: number) { return n1 + n2 } async calcAge2(n1: number, n2: number) { return n1 + n2 } protected async calcAge3(n1: number, n2: number) { return n1 + n2 } }
快速生成特定的注释
如我们想要给 Person添加一些备注说明,那么我们不能使用以下这种注释
// 这个单行注释不行 /* 这个普通的多行注释也不行 */
我们只能使用这种
/** * 这个是OK的 */
你可以在想要修饰的代码上方 输入 /** + tab
开快速生成
在带有参数的函数上方,它会自动添加参数的修饰符,包括返回值
@param 和 @returns
@param 修饰函数的形参
@returns 修饰返回值
@async
@async 修饰 异步函数
@public
@public 公开
@protected 受保护
@private 私有
@static
其他的jsDoc规范的修饰符总览
修饰符 | 含义 |
@abstract | 表示一个抽象的成员,不能被直接实例化。 |
@access | 用于指定成员的访问级别。 |
@alias | 定义一个别名。 |
@async | 表示一个异步函数。 |
@augments | 指示一个类继承自另一个类。 |
@author | 作者信息。 |
@borrows | 表示从另一个模块借用的函数或属性。 |
@callback | 表示一个回调函数。 |
@class | 用于定义一个类。 |
@classdesc | 类的描述。 |
@constant | 表示一个常量。 |
@constructs | 指示一个函数是构造函数。 |
@copyright | 版权信息。 |
@default | 默认值。 |
@deprecated | 表示已弃用的成员。 |
@description | 描述信息。 |
@enum | 定义一个枚举。 |
@event | 表示一个事件。 |
@example | 示例代码。 |
@exports | 用于指定要导出的成员。 |
@external | 表示外部模块的成员。 |
@file | 文件信息。 |
@fires | 表示触发的事件。 |
@function | 定义一个函数。 |
@generator | 表示一个生成器函数。 |
@global | 表示全局成员。 |
@hideconstructor | 隐藏构造函数。 |
@ignore | 表示忽略的部分。 |
@implements | 表示实现的接口。 |
@inheritdoc | 继承文档说明。 |
@inner | 内部成员。 |
@instance | 实例成员。 |
@interface | 定义一个接口。 |
@kind | 类型种类。 |
@lends | 将属性借给另一个对象。 |
@license | 许可证信息。 |
@listens | 表示监听的事件。 |
@member | 成员。 |
@memberof | 属于某个对象的成员。 |
@mixes | 混合多个类的特性。 |
@mixin | 定义一个混入。 |
@module | 定义一个模块。 |
@name | 名称。 |
@namespace | 命名空间。 |
@override | 表示重写的成员。 |
@package | 包信息。 |
@param | 函数参数说明。 |
@private | 私有成员。 |
@property | 属性。 |
@protected | 受保护的成员。 |
@public | 公共成员。 |
@readonly | 只读属性。 |
@requires | 表示依赖的模块。 |
@returns | 函数返回值说明。 |
@see | 参考信息。 |
@since | 从某个版本开始。 |
@static | 静态成员。 |
@summary | 摘要信息。 |
@this | 当前对象。 |
@throws | 抛出的异常说明。 |
@todo | 待办事项。 |
@tutorial | 教程信息。 |
@type | 类型说明。 |
@typedef | 类型定义。 |
@variation | 变化情况。 |
@version | 版本信息。 |
@yields | 生成的值说明。 |
DevEco Studio 支持自定义修饰符
DevEco Studio 是支持自定义修饰符的,比如
虽然是可以随便自己设定,但是为了团队开发保持一直,还是建议按照一定的规范来编写。如 遵循 上述jsDoc的一些规范
DevEco Studio 快速生成说明文档
DevEco Studio NEXT Beta1(5.0.3.814)
- 当前支持对工程或目录下.ets/.ts/.js/.md格式文件生成ArkTSDoc文档。
- 文件中export的变量、方法、接口、类等将生成相应的ArkTSDoc文档,未export的对象不支持生成。
- 若选择对工程/目录整体导出ArkTSDoc文档,生成后的ArkTSDoc文档目录和原目录结构一致。