当前位置: 首页 > news >正文

程序员如何编写好开发技术文档 如何编写优质的API文档工作

编写技术文档,是令众多开发者望而生畏的任务之一。它本身是一件费时费力才能做好的工作。可是大多数时候,人们却总是想抄抄捷径,这样做的结果往往非常令人遗憾的,因为优质的技术文档是决定你的项目是否引人关注的重要因素。无论开源产品或面向开发者的产品,均是如此。

实际上,我想说明的是:对于面向开发者的产品来说,其用户体验中最重要的一环并不是什么主页设计、登录过程、或者SDK下载。真正最重要的是产品的API文档!如果没人知道你的产品如何使用,纵使它巧夺天工,又有何用?

如果你是一个专门从事面向开发者产品设计的工程师,那么编写完善的技术文档,就跟你为终端用户提供良好用户体验一样关键。

我见过许多类似的情况,一个项目被草率地扔到GitHub的页面上,仅仅配有两行的readme说明文件。要知道,真正成功的API文档是需要用爱来悉心制作的艺术品。在Parse产品项目里,我们就把自己奉献给了这门艺术!

那么,什么才是制作优秀API文档的关键因素呢?

1. 绝不吝惜使用层次

你的设计文档不应当仅仅直白地列出所有的终端函数和其参数。好的文档应该是一整套有机的系统内容,能指引用户通过文档与API进行交互。退一万步说,你至少让你的文档包含以下几个部分。

参考索引:参考索引应当是一个事无巨细的列表,包含了所有功能函数的繁文缛节。它必须注明所有的数据类型和函数规格。高级开发者要能够拿着它整天当参考书使用。

开发指南:这是介于参考索引和开发教程中间程度的文档。它就仿佛是一篇更加详细的参考索引,阐明了如何使用各种API。

开发教程:开发教程会更加具体地阐述如何使用API,并着重介绍其中的一部分功能。如果能提供可编译运行的源代码,那就再好不过了。

在Parse项目里,我们做到了上述所有三个部分。目前我们正在努力编制更多的开发教程。

另外一个此方面优秀的范例是Stripe’s API(http://www.stripe.com) 。这个产品的文档包括一个很棒的《hybrid guide and reference》,以及一套开发教程。《GitHub API参考》也经过了良好的设计。

2. 不要在例子中包含抽象概念

你可以争辩说,我的API本身就是个抽象体, 抽象就是它的特点。然而,当你在教会开发者如何使用的过程中,还是能不抽象就不抽象比较好。

在你的文档中尽可能地举现实中的例子吧。没有哪个开发者会抱怨你举例太多的。实际上,这种做法能显著地缩短开发者理解你产品的时间。对此,我们的网站里甚至给出一个代码样例加以解释。

3. 减少点击次数

开发者痛恨点击鼠标,这已经不是什么秘密了。千万别把你的文档分散在数以万计的页面当中。尽量把相关的主题都放到一个页面里。

我们非常赞成使用“单页面大指南”的组织形式,这种形式不仅能让用户纵览全局,仅仅通过一个导航栏就能进入他们感兴趣的任意主题,另外还有一个好处是:用户在进行搜索的时候,仅仅搜索当前页面,就能涵盖查找所有的内容。

在这个方面的一个优秀范例是ckbone.js documentation,只要你有个鼠标,一切尽在掌握。前往讨论

4. 包含适当的快速指南

万事开头难,开发者学习一套全新的API,不得不重新适应其全新的思维方式,学习代价高昂。对于这个问题的解决办法是:通过快速指南来引导开发者。

快速指南的目的是让用户用最小的代价学习如何利用你提供的API干一些小事。仅此而已。一旦用户完成了快速指南,他们就对自己有了信心,并能向更加深入的主题迈进。

举个例子,我们的快速指南能让用户下载SDK以及在平台上存储一个对象。为此,我们甚至做了一个按钮,来让用户测试他们是否正确地完成了快速指南。这能提升用户的信心,以鼓励他们学习我们产品其他的部分。

5. 支持多种编程语言

我们生活在一个多语言的世界。如果可能的话,为你的API提供各种编程语言版本的样例程序,只要的API支持这些语言。多数时候,多语言的工作都是由客户端库来完成的。要知道,开发者要想掌握一套API,离开他们熟悉的编程语言,是很难想象的。

MailGun’s API为此做出了良好的榜样。它提供了curl,Ruby,Python,Java,C#和PHP等多个版本供开发者选择。

6. 绝不放过任何边界情况

使用API开发应用,所能遭遇的最糟糕的情况,莫过于你发现了一个文档中没有提到的错误。如果你遇到这种情况,就意味着你不能确认究竟是你的程序出了错,还是你对API的理解出了错。

因此,参考索引中必须包含每种假设可能造成的边界情况,不论是显示的还是隐式的。花点儿时间在这个上面,绝对能起到事半功倍的效果。

7. 提供样例应用

在学习结束的时候,开发者希望能看到关于项目产品应用的大致蓝图。达到这一目的最好的办法,莫过于提供可运行的样例应用。我发现,应用程序代码是将API运行机理和系统整合融会贯通最好的办法。

sample code in Apple’s iOS Developer Library 则是这方面做得很好的,它包含了详尽的iOS样例程序,并按主题一一分类。

8. 加入人性化的因素

阅读技术文档枯燥乏味,自然不像坐过山车那样紧张刺激。不过,你至少可以通过加入一些人性化的因素,或者开开玩笑。给你的例子中的变量其一些好玩儿的名字吧,别老是把函数名称叫什么foo之类的,好让你的读者有焕然一新的感觉。

至少,这可以保证你的读者不会读着读着就睡过去。

结论:

若要想深入人心,一个良好的设计文档必不可少。然而,设计一个好文档是需要大量投入才能形成的。但是,这些投入是值得的,因为它的意义和产品本身同等重要。

编写良好文档的另一半诀窍,是要从产品开发的初始阶段就朝着这个方向努力。不过,这就不是本文讨论的范畴了。

相关文章:

程序员如何编写好开发技术文档 如何编写优质的API文档工作

编写技术文档,是令众多开发者望而生畏的任务之一。它本身是一件费时费力才能做好的工作。可是大多数时候,人们却总是想抄抄捷径,这样做的结果往往非常令人遗憾的,因为优质的技术文档是决定你的项目是否引人关注的重要因素。无论开…...

二级C语言操作例题(四十)

一、程序填空题 在此程序中,函数fun的功能是:在形参s所指字符串中寻找与参数c相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。 例如,若s所指字符串”baacda”,中c的字符为…...

vue-router 源码解析(二)-创建路由匹配对象

文章目录基本使用导语createRouterMatcher 创建匹配路由记录addRoute 递归添加matchercreateRouteRecordMatcher 创建matchertokenizePath 解析pathtokensToParser 记录打分insertMatcher 将matcher排序总结基本使用 const routes [{path:"/",component: Demo2,nam…...

分布式新闻项目实战 - 10.Long类型精度丢失问题

怒发冲冠,凭阑处、潇潇雨歇。抬望眼,仰天长啸,壮怀激烈。三十功名尘与土,八千里路云和月。莫等闲、白了少年头,空悲切。 靖康耻,犹未雪。臣子恨,何时灭。驾长车,踏破贺兰山缺。壮志饥…...

如何将本地jar包安装到maven仓库

mvn install:install-file:主要是将本地自定义jar安装到maven仓库,然后在pom中可以直接通过dependency的方式来引用。 此命令有如参数: 命令说明-DgroupId自定义groupId设置groupId 名-DartifactId自定义artifactId设置该包artifactId名-Dversion自定义…...

C++:map和set的认识和简单使用/关联式容器

关联式容器 关联式容器即是用来存储数据的&#xff0c;并且存储的是<Key&#xff0c;Value>结构的键值对&#xff0c;在数据检索时效率比序列式容器高。 序列式容器也就是vector、list、queue等容器&#xff0c;因为其底层为线性序列的数据结构&#xff0c;里面存储的是…...

网络工程师一定要学会的知识点:OSPF,今天给大家详细介绍

1. OSPF 概念OSPF&#xff08;Open Shortest Path First 开放式最短路径优先&#xff09;是一种动态路由协议&#xff0c;属于内部网关协议(Interior Gateway Protocol,简称 IGP)&#xff0c;是基于链路状态算法的路由协议。2. OSPF 的运行原理&#xff08;1&#xff09;OSPF 的…...

企业管理的三大基石及其关系

企业管理的三大基石三大基石是什么三大基石的关系制度&#xff1a;管理&#xff1a;文化&#xff1a;三大基石是什么 一个企业&#xff0c;不管它是属于哪种类型&#xff0c;影响员工行为的都有三种力量——制度、管理和文化&#xff0c;这是管理的三大基石。 三大基石的关系 …...

6个月软件测试培训出来后的感悟 —— 写给正在迷茫是否要转行或去学软件测试的学弟们

本人刚从某培训机构学习结束&#xff0c;现在已经上班一个月了。这篇文章我不会说太多的知识点&#xff0c;或噱人去培训机构学习的话语&#xff0c;仅作为一个普通打工者的身份&#xff0c;来写给那些对于软件测试未来发展、薪资待遇等不清楚的正在为家庭&#xff0c;解决信用…...

IoU Loss综述(IOU,GIOU,CIOU,EIOU,SIOU,WIOU)

边界框回归&#xff08;BBR&#xff09;的损失函数对于目标检测至关重要。它的良好定义将为模型带来显著的性能改进。大多数现有的工作假设训练数据中的样本是高质量的&#xff0c;并侧重于增强BBR损失的拟合能力。 一、L2-norm 最初的基于回归的BBR损失定义为L2-norm&#xf…...

Node=>Express中间件 学习3

1.概念&#xff1a; 例&#xff1a;在处理污水的时候&#xff0c;一般都要经过三个处理环节&#xff0c;从而保证处理过后的废水&#xff0c;达到排放标准 处理污水的这三个中间处理环节&#xff0c;就可以叫中间件 2.中间件调用流程 当一个请求到达Express的服务器之后&#x…...

【STM32笔记】HAL库UART串口配置及重定向(解决接收中断与scanf不能同时工作的问题)

【STM32笔记】HAL库UART串口配置及重定向&#xff08;解决接收中断与scanf不能同时工作的问题&#xff09; 首先 要使用printf和scanf 必不可少的就是 #include <stdio.h>这里需要做的就是配置单片机的UART 并且使其能够被printf和scanf调用 打开异步工作模式 并且选择…...

【前端CSS面试题】2023前端最新版css模块,高频15问

&#x1f973;博 主&#xff1a;初映CY的前说(前端领域) &#x1f31e;个人信条&#xff1a;想要变成得到&#xff0c;中间还有做到&#xff01; &#x1f918;本文核心&#xff1a;博主收集的CSS面试题 目录 一、CSS必备面试题 1.CSS3新特性 2.CSS实现元素两个盒子垂…...

Linux命令大全,赶紧收藏!

新的一年 新的征程 新的课程开班 等你来学&#xff01; 本文为Linux命令大全&#xff0c;从A到Z都有总结&#xff0c;建议大家收藏以便查用&#xff0c;或者查漏补缺&#xff01; A 命令 描述 access 用于检查调用程序是否可以访问指定的文件&#xff0c;用于检查文件…...

大数据入门怎么学习

大数据学习不能停留在理论的层面上&#xff0c;大数据方向切入应是全方位的&#xff0c;基础语言的学习只是很小的一个方面&#xff0c;编程落实到最后到编程思想。学习前一定要对大数据有一个整体的认识。 大数据是数据量多吗&#xff1f;其实并不是&#xff0c;通过Hadoop其…...

用于异常检测的深度神经网络模型融合

用于异常检测的深度神经网络模型融合 在当今的数字时代&#xff0c;网络安全至关重要&#xff0c;因为全球数十亿台计算机通过网络连接。近年来&#xff0c;网络攻击的数量大幅增加。因此&#xff0c;网络威胁检测旨在通过观察一段时间内的流量数据来检测这些攻击&#xff0c;…...

游戏服务器如何选择合适的服务器配置

游戏服务器如何选择合适的服务器配置 大家好&#xff0c;今天给大家分享一下游戏服务器配置的选择&#xff0c;为什么特别的说明一下服务器呢&#xff1f;服务器是决定服稳定性和安全性最重要的一个程序&#xff0c;如果是服务器配置不够&#xff0c;可能会导致服掉线、卡顿的…...

01-幂等性解释,问题及常用解决方案

目录 1. 幂等性简介 2. 后端如何解决幂等性问题 2.1 数据库层面 -> 2.1.1 防重表 -> 2.1.2 数据库悲观锁(不建议,容易出现死锁情况) -> 2.1.3 数据库乐观锁 -> 2.1.4 乐观锁CAS算法原理 2.2 锁层面 2.3 幂等性token层面 -> 2.3.1 简介文字描述: …...

SpringBoot配置文件

配置文件有两种格式&#xff1a; .properties .yml .properties是老版配置文件&#xff0c;.yml是新版配置文件 一、properties详解 IDEA社区版不支持 properties格式的日志的提示&#xff0c;需要安装相应插件。 3.1properties 基本语法 &#xff08;ps:小技巧&#xff0…...

基于蜣螂算法改进的DELM分类-附代码

蜣螂算法改进的深度极限学习机DELM的分类 文章目录蜣螂算法改进的深度极限学习机DELM的分类1.ELM原理2.深度极限学习机&#xff08;DELM&#xff09;原理3.蜣螂算法4.蜣螂算法改进DELM5.实验结果6.参考文献7.Matlab代码1.ELM原理 ELM基础原理请参考&#xff1a;https://blog.c…...

3步掌握文字转手写工具:免费高效实用指南

3步掌握文字转手写工具&#xff1a;免费高效实用指南 【免费下载链接】text-to-handwriting So your teacher asked you to upload written assignments? Hate writing assigments? This tool will help you convert your text to handwriting xD 项目地址: https://gitcod…...

利用VMware虚拟机在本地模拟星图GPU平台环境测试MogFace-large

利用VMware虚拟机在本地模拟星图GPU平台环境测试MogFace-large 想试试最新的MogFace-large人脸检测模型&#xff0c;但手头没有现成的云GPU服务器&#xff1f;或者想先在本地环境里跑通流程&#xff0c;验证一下效果再上云&#xff1f;今天就来分享一个非常实用的方法&#xf…...

Windows内存管理的隐形助手:Mem Reduct如何让老旧电脑重获新生?

Windows内存管理的隐形助手&#xff1a;Mem Reduct如何让老旧电脑重获新生&#xff1f; 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/…...

DecepGPT Schema-Driven Deception Detection with Multicultural Datasets and Robust Multimodal Learnin

DecepGPT: Schema-Driven Deception Detection with Multicultural Datasets and Robust Multimodal Learning Authors: Jiajian Huang, Dongliang Zhu, Zitong YU, Hui Ma, Jiayu Zhang, Chunmei Zhu, Xiaochun Cao Deep-Dive Summary: DeepGPT: 基于模式驱动的多文化数据集…...

深度学习赋能国税局发票查验:中英文混合验证码的高效识别方案

1. 验证码识别的税务场景痛点 每次打开国税局网站查验发票时&#xff0c;那个扭曲变形的中英文混合验证码是不是让你特别头疼&#xff1f;作为财务人员&#xff0c;我每天要处理上百张发票&#xff0c;手动输入这些验证码不仅效率低下&#xff0c;还容易出错。传统OCR技术在这里…...

[小红书AI自动化教程]凌晨2点我在睡觉,AI偷偷发了篇小红书爆款:醒来99+点赞,人类社媒苦役终结?

我把小红书交给 OpenClaw&#xff0c;它开始自己干活了 凌晨两点&#xff0c;我在睡觉&#xff0c;它却偷偷发了一篇爆款。 醒来点赞99&#xff0c;评论全是“姐妹求链接”。这不是科幻。去年我还为追热点熬夜秃头&#xff0c;如今一句“今天发什么”&#xff0c;AI 就能完成选…...

小米Pad 5 Windows驱动完整配置指南:解锁平板的桌面级生产力

小米Pad 5 Windows驱动完整配置指南&#xff1a;解锁平板的桌面级生产力 【免费下载链接】MiPad5-Drivers Based on Surface Duo Drivers. 项目地址: https://gitcode.com/gh_mirrors/mi/MiPad5-Drivers 想要让小米Pad 5变身真正的生产力工具吗&#xff1f;这款基于高通…...

Revolut警告支持高耗能AI和加密货币业务可能面临声誉风险

英国银行应用Revolut表示&#xff0c;由于支持加密货币和AI等高耗能行业&#xff0c;公司可能面临声誉风险&#xff0c;同时该公司公布去年利润增长57%。这家金融科技公司在等待监管批准五年后&#xff0c;现在终于可以作为正式的英国银行启动业务。Revolut在其2025年年报中警告…...

Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(十七):Boot 3 → Boot 4 迁移避坑指南——那些文档不会告诉你的迁移血泪史

系列导航 | ← 上一篇:D16 Spring Boot 4 + AI推理后端集成 | 下一篇:D18 云原生部署:Docker + K8s + GraalVM → 适用读者:正在从 Spring Boot 3.x 升级到 4.x 的开发者,或在评估升级可行性的架构师。 前置知识:熟悉 Spring Boot 3.x 开发,了解 JDK 21+ 基本特性。 本文…...

GitHub中文界面插件:3分钟告别英文障碍,专注代码协作

GitHub中文界面插件&#xff1a;3分钟告别英文障碍&#xff0c;专注代码协作 【免费下载链接】github-chinese GitHub 汉化插件&#xff0c;GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 你是否曾…...