当前位置:首页 > 技术分析 > 正文内容

成为一个优秀的开发人员,从写文档开始

ruisui883周前 (04-11)技术分析14

在移动、Web 和桌面应用或 JavaScript 库的开发领域中,文档在应用的成功之路上扮演着非常重要的角色。但如果你曾经编写过文档,就肯定会同意我的看法:编写文档是开发人员最不喜欢做的事情之一。

与编写代码(这是开发人员的本职工作)不同,文档必须能被所有人轻松理解(这里的所有人不仅是指开发人员,也包括缺乏技术背景的一般人)。从技术上讲,我们必须将机器语言(代码)翻译成普通人都可以理解的语言,这种事情说起来容易做起来却很难。

尽管这件事情可能会给你带来很大的负担,但是编写文档是很重要的环节,并且可以为你的用户、你的同事,尤其是你自己带来诸多好处。

好的文档可以帮助用户

显然,文档可以帮助读者 理解代码的工作原理。但是许多开发人员有着错误的认识,那就是他们认为软件的用户都是编程高手。在这样的假设下,他们编写的文档可能只是薄薄的几页纸,从头到尾跳过了文档本应该包含的许多要点。如果你精通编程语言,那么遇到问题还可以自己找出解决办法。如果你并没有那么专业,那么看文档时很容易就会迷失方向。

供用户使用的文档通常包括使用实践或“操作方法”的内容。为一般用户创建文档时,经验法则是 文档应该清晰直观。使用普通人也容易理解的词汇要比使用技术术语或专业习语更合适。软件的实际应用示例也是非常受用户欢迎的。

良好的文档布局设计还可以真正帮助用户轻松浏览文档的各部分内容。在这方面一些很好的例子包括 Bootstrap 的文档,和 WordPress 的“WordPress 的第一步”文档,它们也都是我最喜欢的榜样。

好的文档可以帮助其他开发人员

每位开发人员都有自己的代码风格。但在团队合作中,我们经常需要与其他同事共享代码。因此大家有必要 达成共识,形成一套标准,以使所有人保持一致。精心编写的书面文档会是团队必要的参考。

但与最终用户文档不同,这类文档通常会描述代码命名约定之类的技术流程,展示开发人员应如何构造特定页面,以及 API 如何工作,外加一些代码示例。通常,我们还必须在代码内编写文档(称为注释),以描述所注释代码的作用。

此外,如果以后有新成员加入团队,这类文档可以是培训他们的一种省时有效的方法,这样你就不必为新人一对一地讲解代码了。

好的文档也可以帮助开发人员自己

关于编程的有趣之处在于,有时 甚至开发人员自己也不理解他们编写的代码。尤其是当开发人员几个月甚至几年都没再碰过自己写过的代码时,他们突然回来看自己的作品会感到十分陌生。

如果出于某种原因,开发人员需要重新审阅以前的代码,他们往往会怀疑自己在编写这些代码时到底在想些什么。别惊讶:我以前就曾遇到过这种情况。在这种情况下,我肯定会希望自己给代码写下了良好的文档

给你的代码写好文档的话,你就能够快速深入到代码的底层,不会有那么多疑惑,从而节省许多时间。省下来的这些时间可以拿来完成更改工作。

好的文档有哪些特性?

有几个因素可以帮助你构建出良好的文档。其中一些最重要的因素如下:

1. 永远不要假设

不要以为你知道的东西用户也知道,或者他们很清楚自己应该了解的内容。无论用户的熟练程度如何,总是 从头开始解释各种事情 是更好的选择。

例如,如果你构建了一个 jQuery 插件,则可能会从 SlickJS 的文档中汲取灵感。它介绍了如何构造 HTML、放置 CSS 和 JavaScript 的位置、从头开始讲解如何初始化 jQuery 插件,甚至还展示了添加所有这些内容后的完整最终标记,所有东西都写得清清楚楚。

最重要的是,文档应该是根据用户而不是开发人员的思考过程来编写的。以这种方式处理你自己的文档,将为你提供一个更好的视角来组织自己的代码。

2. 遵守标准

在添加与代码内联的文档时,请使用 代码编程语言所期望的标准。 我们应该总是解释每个函数、变量以及函数返回的值都是什么意思。下面是一个很好的 PHP 内联文档示例。

/**
 * Adds custom classes to the array of body classes.
 *
 * @param array $classes Classes for the body element.
 * @return array
 */
function body_classes( $classes ) {
  // Adds a class of group-blog to blogs with more than 1 published author.
  if ( is_multi_author() ) {
    $classes[] = 'group-blog';
  }

  return $classes;
}
add_filter( 'body_class', 'body_classes' );

以下是使用 PHP、JavaScript 和 CSS 的最佳实践来格式化内联文档的一些参考:

  • PHP:WordPress 的 PHP 文档标准
  • JavaScript: UseJSDoc
  • CSS: CSSDoc

如果你使用的是 SublimeText ,我建议你安装 DocBlockr,它将用内联文档巧妙地预填充你的代码。

3. 图形元素

文档中应该多用图形元素,它们比文本更直观。这些媒介很有用,特别是当你使用图形界面构建软件时。你可以添加指向性元素,例如箭头、圆圈或 任何可以帮助用户直观地弄清楚如何完成这些步骤的元素

以下是 Tower 应用中的示例,你可以从中汲取灵感。它们很好地解释了如何用优雅的方式来做版本控制工作,比纯文本命令行更容易理解。

4. 分区

你可以考虑将文档中的一些内容包装在项目符号列表和表格中,因为这样可以让用户更容易浏览较长的内容,更方便快速定位。

添加目录,并将文档拆分为一些容易理解的部分,同时要让各个部分与接下来的内容保持关联。内容应该简短明了。以下是 Facebook 中一份组织良好的文档示例。

我们可以点击目录元素,直接跳转到对应内容。

5. 修订和更新

最后,文档写好后要仔细查看文档中是否有错误,并在必要时,或在产品、软件或库发生重大更改时修订文档。如果不随产品一起定期更新,那么你的文档对任何人都是没用的。

引文原文

The Importance of Documentation for Web Developers

关注我并转发此篇文章,私信我“领取资料”,即可免费获得InfoQ价值4999元迷你书,点击文末「了解更多」,即可移步InfoQ官网,获取最新资讯~

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3441.html

标签: js文档
分享给朋友:

“成为一个优秀的开发人员,从写文档开始” 的相关文章

管理费用预算管理办法

第一章 总则第一条 为实现公司各项经营指标,控制费用开支,规范管理费用预算,特制定本办法。第二条 本办法适用于公司内各部门的管理费用预算工作。第三条 职责划分(一)各职能部门,负责提出部门预算目标及确定依据,编制部门预算,并执行预算方案。(二)财务部门,负责汇总、审查、分析、平衡各部门预算,提出调整...

手把手教你Vue之父子组件间通信实践讲解【props、$ref 、$emit】

组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用。那么组件间如何通信,也就成为了vue中重点知识了。这篇文章将会通过props、$ref和 $emit 这几个知识点,来讲解如何实现父子组件间通信。转载链接:https://www.jia...

Git分布式系统---Gitlab多人工作流程

前言在上一次推文中,我们已经很清楚的讲解了如何创建本地仓库、提交(push)项目到远程仓库以及从远程仓库clone(克隆)项目到本地的相关操作。大家可以先去看前面的推文(快速掌握Git分布式系统操作)点击查看目前无论你是否步入社会还是在校学生,都会使用Gitlab来进行团队的代码管理。(可以这样说:...

高效使用 Vim 编辑器的 10 个技巧

在 Reverb,我们使用 MacVim 来标准化开发环境,使配对更容易,并提高效率。当我开始使用 Reverb 时,我以前从未使用过 Vim。我花了几个星期才开始感到舒服,但如果没有这样的提示,可能需要几个月的时间。这里有十个技巧可以帮助你在学习使用 Vim 时提高效率。1. 通过提高按键重复率来...

30 个纯 HTML5 实现的游戏

浏览器和 JavaScript 的功能逐年不断的变强变大。曾几何时,任何类型的游戏都需要Flash。但随着 HTML5 发展,HTML5 + WebGL 游戏式就慢慢占领着这个舞台。以下是30款流行的游戏,它们可以在所有现代浏览器中运行,并且只使用web技术构建。1. HexGL地址:http://...

虚幻引擎5.5发布

IT之家 11 月 13 日消息,虚幻引擎 5.5 现已发布。据介绍,新版本虚幻引擎在动画创作、虚拟制作和移动游戏开发方面取得进步;渲染、摄像机内视觉特效和开发人员迭代等领域的部分功能已可用于生产。IT之家整理部分功能亮点如下:动画Sequencer增强虚幻引擎的非线性动画编辑器 Sequencer...