程序员编写文档的 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,然后检查它是否是坏版本。如果是坏版本…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
