1# 开源社区文档写作规范 2 3## 文档交付清单(应用开发) 4 5- **JS API参考**:应用程序接口。 6 7 按照**d.ts**文件进行分类,**一个d.ts文件对应一个md文档,该文档包含当前版本需要交付的所有接口**,每一个接口都需要包括接口的功能描述、参数描述、返回值描述、示例代码等。 8 9- **开发指南**:**用于指导用户进行应用程序的设计和开发**,从应用程序开发角度介绍基于平台功能特性开发应用程序的过程。 10 11 按照**场景进行分类**,通过描述场景功能、使用限制、调用接口等,以步骤的形式循序渐进地指导开发人员完成基于平台/产品提供的开放API或 SDK进行二次开发,最终实现某个特性或功能。 12 13- **术语**:向开发者传递**完整、准确、唯一的**概念。 14 15 当出现一个新概念时,需要提供统一的术语依据,规范化概念和名词表达。例如,eTS。 16 17- **apidiff/changelog**:向开发者说明**版本变更**情况。 18 19 apidiff说明该版本所有接口的修改,包括新增、变更、废弃三种情况,若无修改则不用说明。 20 21 若该版本存在变更后无法适配的接口,需要在changelog中说明每一个接口需要做的适配操作。 22 23- **FAQ**( Frequently Asked Questions ):开发者常见异常及处理建议。 24 25- **Readme**:向开发者介绍OpenHarmony子系统/部件的需求背景。 26 27## 文档写作基本要求(适用于所有文档) 28 29- **完整性** 30 31 文档无场景缺失、无操作断点,交付内容需和版本实际交付范围一致,不遗漏、不超前。 32 33- **正确性** 34 35 文档描述和实现**功能一致**,版本信息、参数、返回值描述无误,**用户可以通过文档进行实际操作**。 36 37- **规范性** 38 39 文档描述**符合资料规范**,无低错、前后矛盾、上下文不一致、有歧义、敏感词等问题。注意:文档描述遵循术语规范,非必要场景不体现厂家信息。 40 41- **易理解** 42 43 文档描述简洁、清晰,面向开发者,对开发者可感知和使用的能力进行描述。示例代码易理解,上下文完整(或提示)、参数明确、复杂逻辑有注释。 44 45- **合规性** 46 47 **无抄袭或合规风险**。包括但不限于:描述不可与友商高度一致,禁止使用友商特有的概念。 48 49## 明确文档结构(应用开发) 50 51应用开发文档链接: [https://](https://gitee.com/openharmony/docs/tree/master/zh-cn/application-dev)[gitee.com/openharmony/docs/tree/master/zh-cn/application-dev](https://gitee.com/openharmony/docs/tree/master/zh-cn/application-dev) 52 53开发指南按不同功能分文件夹,平铺在application-dev中,比如media存放媒体开发指南,usb存放usb服务的开发指南。API参考统一放到application/reference/apis文件夹中。 54 55![](figures/figure1.png) 56 57## 每一个文档包含的内容(JS API和开发指南) 58 591. 图片文件夹:放置文档中引用的图片,包含svg、png、gif等。 602. 系统资源文件夹:放置文档中引用的系统图标,无需关注。 613. Readme:目录每一个新增的md文档,都需要写在Readme中。 624. 文档:重点关注文档命名,详见后续描述。 63 64![](figures/figure2.png) 65 66## JS API内容写作 67 68### 新建文档 or 在原有的文档里继续添加? 69 70该模块(以一个d.ts为单位)之前是否有文档?——是,在原有的文档里继续添加新增接口。否,新建一个markdown(md)文件。 71 72![](figures/figure3.png) 73 741. **文件命名**:一个d.ts文件对应一个js api接口文档,文件名称:**js-apis-模块名.md**。示例: 75 76 媒体@ohos.multimedia.audio,文件命名为:js-apis-audio.md。 77 78 电话@ohos.telephony.sms,文件命名为:js-apis-sms.md。 79 802. **文档标题:**使用**中文短语**概括本模块功能。但如果部分概念使用英文更便于开发者理解,不必强求,比方说,Ability、SIM卡等概念可以直接使用。 81 82 如果在原有文档添加接口,需要检查新增了接口后,标题还能不能概括所有内容。比如说,media在API 6叫音频播放,但API 7新增了“音频录制”、“视频解码”的能力后,名字就要修改了。 83 843. **内容写作**较多,在后续指导中详细描述。 85 864. **上传路径**:docs/zh-cn/application-dev/reference/apis,图片放到对应的figures文件夹中。 87 885. **修改对应的Readme**,即docs/zh-cn/application-dev/reference/apis/Readme-CN.md。如果文档标题没有修改,无需修改Readme。 89 90**Tips:docs仓的PR合入后,将自动触发翻译issue。** 91 92### 内容写作 93 94JS API 文档模板路径:[https://](https://gitee.com/openharmony/docs/blob/master/zh-cn/contribute/template/js-template.md)[gitee.com/openharmony/docs/blob/master/zh-cn/contribute/template/js-template.md](https://gitee.com/openharmony/docs/blob/master/zh-cn/contribute/template/js-template.md) 95 96**每一个文档必须包含的内容:** 97 98- **文档标题** 99 100 - **起始版本说明(必选)**:本模块首批接口的起始版本,以说明的形式进行插入。 101 102 ![](figures/figure4.png) 103 104 - **模块说明(必选)**:对该模块提供的功能、使用场景和使用建议进行简要描述。 105 106 例如,轻量级存储为应用提供key-value键值型的文件数据处理能力,支持应用对数据进行轻量级存储及查询。 107 108 - **导入模块/使用说明(必选)**:根据实际情况填写导入模块,如果没有导入模块,将“导入模块”修改为“使用说明”。 109 110 导入模块,采用**代码段**的样式,给出import语句。 111 112 使用说明,说明使用接口的先决条件,例如:在使用AbilityContext的功能前,需要通过getContext()先获取Context对象。 113 114 - **权限(必选)**:对该模块接口的使用权限做以说明。 115 116 例如,需要权限:ohos.permission.XXX(如不涉及可删除,如果是系统权限要说明) 117 118 - **功能描述(必选)**:对该模块涉及到的属性、接口等做以说明,在功能描述中进行详细解释。 119 120- **功能描述(与d.ts文件保持一致)**: 121 122 - **属性字段(namespace下的,可选)**:定义了对象的特征。 以表格形式呈现,包括属性名称、属性类型、可读、可写、属性说明。 123 124 - **方法(namespace下的,必选)**:关联到对象的函数。以section形式呈现,包括方法名称、调用形式、功能说明、参数、返回值、示例代码。 125 126 - **枚举(可选)**:一组值组成的类型。 以表格形式呈现,包括枚举名称、枚举值、说明。 127 128 - **类/interface(可选)**:一般包含自有属性和方法。以section形式呈现,包括类名/interface名、描述、自有属性等。 129 130 - **自定义类型( 可选)**:以k-v键值对表示的interface,描述和方法的参数一致。以表格形式呈现,包括参数名、类型、是否必填、说明。 131 132 - **属性字段( class/interface里的,可选)** 133 134 - **方法( class/interface里的)** 135 136**标题层级**: 137 138![](figures/figure5.png) 139 140**版本标记**: 141 1421. 如果新版本增加了一个类,则该类、类的方法、类的属性均需打上版本标记。以全球化intl的文档为例说明。 143 144 intl的起始版本是API 7,在API 8新增了类**Collator、constructor方法等**,**于是给类Collator及其所有的方法打上8+的上标**,标记方式为直接在新增内容后面标记8+。 145 146 ![](figures/figure7.png) 147 1482. 对于新版本废弃的内容,不能直接在文档上删去,需在废弃内容后面加上标标注deprecated,并使用“>”引用语法建议使用的替代方式,加上对应的链接。示例如下: 149 150 abandonmentMethod(deprecated) 151 152 \> 从API version 7 开始废弃,建议使用newMethod替代。 153 154**写作示例**: 155 1561. 参数返回值说明、示例代码写作示例: 157 158![](figures/figure8.png) 2. 类、interface写作示例: 159 160![](figures/figure9.png) 161 162## JS 开发指南写作 163 164### 文档创建方式 165 166![](figures/figure10.png) 167 168**注意**: 169 1701. 文件夹命名:一个文件夹对应相关模块的开发指导。 1712. 上传路径:docs/zh-cn/application-dev/xxx文件夹,图片放到对应的figures文件夹中。 1723. 新增指南/添加文档,均需填写对应的Readme,即docs/zh-cn/application-dev/xxx文件夹/Readme-CN.md。 173 174### 内容写作 175 176开发指南模板链接:[guide-template.md](template/guide-template.md) 177 178**每一个文档必须包含的内容**: 179 180- **概述/xxx开发概述(必选)** 181 182 - **功能简介(必选)** :描述本指南提供了什么能力,指导开发者完成什么任务。 183 184 - **基本概念(必选)** :描述开发任务相关的基本概念。 185 186 - **运作机制(可选)** :描述开发任务实现功能的基本运作原理。 187 188 - **约束与限制(必选)** :描述本开发任务过程中的约束条件,以及此操作约束带来相应的负面影响。 189 190- **Xxx开发指导(必选)** 191 192 - **场景介绍(必选)** :描述在什么情景下解决什么问题,最终达到什么样的效果。 193 194 - **接口说明(必选)** :描述本开发指导相关的接口有哪些。 195 196 - **开发步骤(必选)** :描述开发的整体过程,便于开发者快速完成开发 197 198 - **调测验证(可选)** :开发完成后,如有独立的调测验证操作,需提供指导,以确认操作是否成功。 199 200 - **开发实例/sample(必选)** :开发完成后,基于一个任务整体做代码段的描述。 201 202可选≠不写,可选=子系统可能没有这个情况。 203 204**写作示例:** 205 2061. 概述写作示例: 207 208 ![](figures/figure11.png) 209 2102. 开发指导步骤写作示例: 211 212 ![](figures/figure12.png) 213