程序员编写文档的 10 个技巧
编写好的文档在软件开发领域具有重大意义。文档是概述特定问题陈述、方法、功能、工作流程、架构、挑战和开发过程的书面数据或指令。文档可以让你全面了解解决方案的功能、安装和配置。
文档不仅是为其他人编写的,也是为自己编写的。它让我们自己知道我们以前做过什么,这有助于我们在发展它们时抓住确切的心态和想法。记录完善的计划使团队成员能够高效协作,减少团队花在弄清楚如何执行任务并让他们遵循既定工作流程上的时间。它可以帮助您和其他人理解实现细节,从而更容易维护或调试程序。
这里,我们将分享一些编写文档的技巧及常用工具,希望对大家有所帮助。
1.从了解问题开始
在制定解决方案之前先了解问题,这使我们对问题本身有了深刻的理解,并将它们写下来将有意识地开辟开发有效解决方案的可能性。清晰地定义和阐明问题有助于您确定问题的根本原因及其潜在影响。它还有助于与其他人(例如团队成员、审阅者和文档的其他潜在读者)沟通问题。
2.了解你的读者
当谈到编写好的文档时,我们需要考虑的关键事情之一是了解您的读者是谁,并据此进行编写。就像熟练的作家根据目标受众定制自己的作品一样,开发人员通过了解读者的潜力来编写文档也非常重要。我们可以做到这一点的方法之一是使用某些读者容易理解和掌握的语言和术语。
3.记录你未来的决定
使用此技巧的理想时间是当您要从编码中休息一下时,但您需要确保记住项目的流程。例如,您做出的逻辑、设计和架构决策。在捕捉特定发展历程的同时,跟踪您过去做出的决定或选择至关重要。这将极大地帮助你在休息后掌握确切的心态或状态。需要根据适当的理由来跟踪决策(您为什么做出选择?)。例如:
“决定:我们选择集成 PostgreSQL 数据库以实现高效的数据存储。
理由:PostgreSQL 因其强大的可靠性、可扩展性和广泛的功能而成为理想的选择。该数据库的 ACID 合规性保证了最大的数据一致性和完整性,这是我们项目成功的一个重要方面。此外,PostgreSQL 对高级查询功能的卓越支持及其可扩展性使我们能够无缝处理和分析大量数据。”
4.记录要点
记录要点是指跟踪所有的参考链接、文档和研究来源,以便开发人员更容易快速、轻松地访问资源,而不是长时间搜索特定文档或资源。如果实施得当,这可以节省数小时的时间。我们必须更加强调保留重要细节以供将来参考,因为它能够节省大量开发、维护甚至更新特定代码版本的时间。
5.保持简单、清晰、不言自明
文档应该易于读者理解。我们必须把构建模块的功能和逻辑解释得非常清楚,这有助于模块的进一步开发、维护和升级。我们必须尽可能保持文档干净且有条理。使文档本身不言自明至关重要。在记录程序的复杂部分时,建议在文档中添加示例代码,并真正尝试分解代码并使读者清楚这一点至关重要。正如我们之前讨论的,您的文档将覆盖广泛的人群,因此,您对文档的文字和结构的选择必须清晰,并向读者展示清晰的感觉,这一点非常重要。
6.共同创建
创建和维护文档不应该是一个单独的责任。创建文档的工作应该众包,原因有很多,主要是为了分配员工的工作量,这允许所有其他贡献者表现出对项目的主人翁意识。来自不同部门或领域的贡献者的参与将使我们能够创建整体且全面的文档。
例如,开发人员可能会在文档中贡献技术见解,而业务利益相关者则提供项目的目标和未来方面。总体而言,通过众包文档工作,您可以利用团队的集体知识和专业知识,从而生成更广泛、更准确且得到广泛认可的文档。
7.遵循统一的格式
我们需要在整个文档中遵循类似的格式化技术,以确保它易于理解,并允许读者轻松浏览内容并有效地获得有用的见解。如有必要,我们必须使用标题、副标题、要点和表格正确格式化文档。这些使我们能够保持文档的可读性。通过遵循统一的格式,我们可以创建有凝聚力且用户友好的文档。
8.使用图表和视觉效果
在文档中包含图表和视觉效果可以极大地提高读者的理解和参与度。更容易直观地解释复杂的逻辑和实现。图表、流程图和图表等视觉表示有助于以清晰简洁的方式说明流程、系统或数据。像这样的视觉表示作为一种通用语言,可以克服语言熟练程度或技术专业知识等障碍。在合并图表时,请确保添加清晰简洁的标签并保持一致性,以避免读者不必要的混淆。永远记住,图形应该增强书面内容,而不是完全取代它。应谨慎使用它们,重点是更有效地传达复杂或重要的信息。例如
9.在开发的同时编写文档
人们通常在开发阶段之后编写文档,这是一种常见的误解和不好的做法,这不仅使文档阶段变得更加复杂,而且还导致文档中出现很多错误信息。在这种情况下,回忆开发阶段的重要信息和细节就变得具有挑战性。此外,开发后创建文档会增加误解和误解扩散的可能性。如果没有实时文档,开发人员可能会诉诸个人解释或假设,导致实际实现与文档信息之间不一致。
10.审核最终版本
在项目的最后,一定从从头至尾彻底审核文档。因为会来回参与开发和文档,我们的文档可能缺乏所需的结构。最后,调整一些东西并重组文档可以使其成为格式良好且相对更好的文档。
最后的话
常见编写文档的网站有GitBook、Document360,要创建图表和流程图,您可以使用:微软Visio、XMind。总之,每个开发人员都应该牢牢掌握编写文档的技巧。文档是一种有用的工具,可以提高生产力、协作和知识转移,而不仅仅是事后的想法或例行任务。
相关文章:

程序员编写文档的 10 个技巧
编写好的文档在软件开发领域具有重大意义。文档是概述特定问题陈述、方法、功能、工作流程、架构、挑战和开发过程的书面数据或指令。文档可以让你全面了解解决方案的功能、安装和配置。 文档不仅是为其他人编写的,也是为自己编写的。它让我们自己知道我们以前做过什…...
【ES问题总结】
文章目录 1、什么是ElasticSearch;2、ElasticSearch的基本概念;3、什么是倒排索引;4、DocValue的作用;5、text和keyword类型的区别;7、query和filter的区别;8、es写数据的过程;9、es的更新和删除流程&#…...
数据结构----结构--线性结构--顺序存储--数组
数据结构----结构–线性结构–顺序存储–数组 数组:类型相同,空间连续,长度固定 搜索: (1)基于索引搜索,时间复杂度O(1) (2)基于数值搜索: 1.有序的&…...
docker 启动kitex 的opentelemetry
https://github.com/cloudwego/kitex-examples/blob/main/opentelemetry/docker-compose.yaml 下载两个yaml文件:docker-compose.yaml otel-collector-config.yaml 在该目录下执行 docker-compose up -d...

Excel中——日期列后添加星期
需求:在日期列中添加星期几? 第一步:打开需要添加星期的Excel文件,在日期后面添加日期 第二步:选择日期列,点击鼠标右键,在下拉列表中,选择“设置单元格格式” 第三步: 在…...

谈谈DNS是什么?它的作用以及工作流程
作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、DNS是什么? 二、DNS的作用 三、DNS查询流程 1、查看浏览器缓存 2、查看系统缓存 3、查看路由器缓存 4、查看ISP …...

Qt小项目贪吃蛇实线,主要掌握定时器、信号与槽、按键事件、绘制事件、坐标运算、随机数生成等
Qt小项目贪吃蛇实线,主要掌握定时器、信号与槽、按键事件、绘制事件、坐标运算、随机数生成等 Qt 贪吃蛇演示QWidget 绘制界面项目源文件 注释清晰widget.hwidget.cpp 拓展QTimerQKeyEventQRectFQPointFQPainterQIcon Qt 贪吃蛇演示 QWidget 绘制界面 项目源文件 注…...

使用HTTP隧道时如何应对目标网站的反爬虫监测?
在进行网络抓取时,我们常常会遇到目标网站对反爬虫的监测和封禁。为了规避这些风险,使用代理IP成为一种常见的方法。然而,如何应对目标网站的反爬虫监测,既能保证数据的稳定性,又能确保抓取过程的安全性呢?…...

怎么样通过Bootstrap已经编译好(压缩好)的源码去查看符合阅读习惯的源码【通过Source Map(源映射)文件实现】
阅读本篇博文前,建议大家先看看下面这篇博文: https://blog.csdn.net/wenhao_ir/article/details/132089650 Bootstrap经编译(压缩)后的源码百度网盘下载地址: https://pan.baidu.com/s/14BM9gpC3K-LKxhyLGh4J9Q?pwdm02m Bootstrap未经编译…...

【排序算法】python之冒泡,选择,插入,快速,归并
参考资料: 《Python实现5大排序算法》《六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序》 --代码似乎是C语言 ———————— 本文介绍5种常见的排序算法和基于Python实现: 冒泡排序(Bubble Sort&am…...

UML—用例图的那些事
目录 背景: 1.用例图的发展史 过程: 1.用例图中的元素和关系 2.应用中的例子 总结: 背景: 1.用例图的发展史 用例图是一种常用的软件工程工具,用于描述系统的功能需求和用户与系统的交互。它在软件开发过程中起到了重要的作用,并且经历了…...
迷宫出口问题求解(DFS)
题面 一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由 nn 的格点组成,每个格点只有 22 种状态, 00 和 11,前者表示可以通行后者表示不能通行。 同时当Extense处在某个格点时,他只能移动到东南西北…...
基础算法模板
数据结构 单链表的插入删除 const int N=1e6+10; int head,e[N],ne[N],idx; //head 存储头节点的下标 //idx 存储当前已经用到的那个点 void init() {head=-1;idx=0; } void add_to_head(int x)//插入头节点操作 {e[idx]=x;ne[idx]=head;head=idx;idx++; } void add(int k)/…...
react Ref 的基本使用
类组件中使用ref 在类组件中,你可以使用createRef来创建一个ref,并将它附加到DOM元素或类组件实例上。使用ref允许你在类组件中访问和操作特定的DOM元素或类组件实例。 下面是在类组件中使用ref的步骤: 引入React和createRef: …...

宝塔面板点击SSL闪退打不开怎么解决?
宝塔Linux面板点击SSL证书闪退如何解决?旧版本的宝塔Linux面板确实存在这种情况,如何解决?升级你的宝塔Linux面板即可。新手站长分享宝塔面板SSL闪退的解决方法: 宝塔面板点击SSL证书闪退解决方法 问题:宝塔Linux面板…...

如何将安卓 Gradle 模块打包发布到本地 Maven 仓库
文章目录 具体流程 笔者的运行环境: Android Studio Flamingo | 2022.2.1 Android SDK 33 Gradle 8.0.1 JDK 17 Android 的 Gradle 项目与一般的 Gradle 项目是不同的,因此对将 Gradle 模块打包发布到本地 Maven 仓库来说,对普通 Gradle …...

【Docker】Docker比虚拟机快的原因、ubuntu容器、镜像的分层概念和私有库的详细讲解
🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:CSTL&…...

java.lang.IllegalArgumentException: Invalid character found in methodname
postman请求异常:java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens...

【PCB专题】Allegro高速电路Xnet网络等长约束——SDIO信号为例
高速PCB板布线过程中,经常遇到等长设置问题,例如DDR的一组数据线和地址线等。但是由于数据线和地址线中间有一个电阻(或排阻),这种情况下设置等长就要引入Xnet的概念,通过设置Xnet的等长来确保数据线和地址线的等长。 由无源、分立器件(电阻、电容、电感)连接起来的几段…...

leetcode每日一练-第278题-第一个错误的版本
一、思路 二分查找——因为它可以快速地将版本范围缩小一半,从而更快地找到第一个坏版本。 二、解题方法 维护一个左边界 left 和一个右边界 right,在每一步循环中,我们计算中间版本 mid,然后检查它是否是坏版本。如果是坏版本…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...

《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...