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

程序员编写文档的 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,然后检查它是否是坏版本。如果是坏版本…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

Python如何给视频添加音频和字幕

在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

mac:大模型系列测试

0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...

基于鸿蒙(HarmonyOS5)的打车小程序

1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...

C++--string的模拟实现

一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现,其目的是加强对string的底层了解,以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量,…...

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践,很多人以为AI已经强大到不需要程序员了,其实不是,AI更加需要程序员,普通人…...

rm视觉学习1-自瞄部分

首先先感谢中南大学的开源,提供了很全面的思路,减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接:https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架: 代码框架结构:readme有…...

未授权访问事件频发,我们应当如何应对?

在当下,数据已成为企业和组织的核心资产,是推动业务发展、决策制定以及创新的关键驱动力。然而,未授权访问这一隐匿的安全威胁,正如同高悬的达摩克利斯之剑,时刻威胁着数据的安全,一旦触发,便可…...

结合PDE反应扩散方程与物理信息神经网络(PINN)进行稀疏数据预测的技术方案

以下是一个结合PDE反应扩散方程与物理信息神经网络(PINN)进行稀疏数据预测的技术方案,包含完整数学推导、PyTorch/TensorFlow双框架实现代码及对比实验分析。 基于PINN的反应扩散方程稀疏数据预测与大规模数据泛化能力研究 1. 问题定义与数学模型 1.1 反应扩散方程 考虑标…...