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

【工具分享】如何快速地、可视化地跟其他同学沟通复杂逻辑——用代码画流程图

版本 日期 修订人 描述
V1.0 2025/3/9 nick huang 创建文档
V1.1 2025/3/11 nick huang 添加「循环 或 遍历」章节

背景

需求澄清技术澄清的时候,我们需要给其他同学表述业务逻辑技术实现逻辑
这些逻辑,用文字往往冗长可读性差
这个时候,我们往往考虑用流程图来表达其中的逻辑。
流程图,因其可视化的特性,可读性确实提高了许多。
但画流程图的效率总是不如意,需要稍长的时间。
前段时间,使用了一款用代码生成流程图的工具,使用下来还不错。
故本文分享之。

文字描述 与 流程图描述 的对比

下图描述的「查询字典数据(先查询Redis,如没命中查数据补偿)」的逻辑。
如果用纯文字描述,因涉及2个判断、2个读数操作、1个写数操作,描述起来会比较冗长、繁琐
而使用流程来可视化,则显得逻辑清晰:
通过Redis和数据库查询字典数据-流程图-示意图

这是用 PlantUML 画的,代码如下:

@startuml
start:从Redis中查询指定字典数据;
if (判断查得的Redis字典数据是否为空?) then (不为空)
#palegreen:返回数据;
stop
else (为空)
:从数据库查询指定字段数据;if (判断查得的数据库字典数据是否为空?) then (为空)
#pink:提示:没有找到数据;
stop
else (不为空)
:写入Redis,缓存起来,供下次快速查询;
#palegreen:返回数据;stop
@enduml

PlantUML

上图是用 PlantUML 画的,官网是:https://plantuml.com/zh/。
流程图,在他的官网描述的是活动图
他有 Web 在线的编辑器。但我习惯用他在IDE的插件,比如Java开发工具IntelliJ IDEA的插件PlantUML Integration

Tips
除了活动图,他的序列图我感觉也不错。
本文主要介绍活动图。

常用的基础语法及解析

开始节点、结束节点

开始节点:实心圆点
结束节点:半实心圆点
代码:

@startuml
startstop
@enduml

效果:
开始节点、结束节点

常规的流程节点

作用:用于表示常规流程操作,不涉及条件判断
形状:圆角长方形
代码:

@startuml
start:业务操作;stop
@enduml

效果:
业务操作节点

判断节点

作用:用于表示条件判断
形状:菱形
代码:

@startuml
startif (今天天气是否晴朗?) then (不晴朗)
:请带上雨伞哦!;
else (晴朗)
:去郊游吧!;
endifstop
@enduml

效果:
判断节点-语法1

对于判断节点,如果判断完毕后执行完业务节点后程序结束。
我有时候倾向这么写,觉得可读性更高(虽然这样流程图有多个结束节点):

@startuml
startif (今天天气是否晴朗?) then (不晴朗)
:请带上雨伞哦!;
stop
else (晴朗)
:去郊游吧!;stop
@enduml

效果:
判断节点-语法2

给节点加上颜色

作用:给节点加上颜色
代码:

@startuml
start#palegreen:业务操作;stop
@enduml

效果:
给节点加上颜色

有时候,流程判断后,有时候有成功或失败的结果导向,给节点加上相应的「红绿灯」颜色,可读性更高:

@startuml
startif (今天天气是否晴朗?) then (不晴朗)
#pink:请带上雨伞哦!;
stop
else (晴朗)
#palegreen:去郊游吧!;stop
@enduml

效果:
给节点加上颜色-判断节点-红绿颜色

循环 或 遍历

作用:用于表示循环、遍历
形状:循环是否结束的判断、返回的箭头、循环结束的箭头

判断在前面的代码示例:

@startuml
startwhile (遍历“userLIst”是否结束) is (未结束):操作1;:操作2;
endwhile (结束):后续操作;stop
@enduml

效果:
循环-判断在前

判断在后的代码示例:

@startuml
startrepeat :循环开始的那个业务操作;
:操作2;
:操作3;
repeat while (遍历“userLIst”是否结束)stop
@enduml

效果:
循环-判断在后

其他

本文只列举本人经常使用的语法。
PlantUML的活动图还有其他特性和语法,可以上官网的文档查阅、使用。

最后

小弟不才,学识有限,如有错漏,欢迎指正哈。
如果本文对你有帮助,记得“一键三连”(“点赞”、“评论”、“收藏”)哦!

http://www.jsqmd.com/news/46576/

相关文章:

  • 2025年11月国内箱式变压器,干式变压器,油浸式变压器,高低压成套设备,箱式变电站源头厂家权威推荐与综合实力解析:力王电气集团有限公司
  • 2025年下半年箱式变压器,干式变压器,油浸式变压器,高低压成套设备,箱式变电站公司权威排名表单及选购指南
  • QMS系统选型指南——如何避免项目失败的陷阱‌
  • 2025年11月公布四川连体服、工作服、劳保服、残疾人服装定制源头厂家权威排名榜单及选购指南
  • 数字化质量管理变革之路——企业如何成功实施QMS系统‌
  • 2025年CNBD测评四川工作服、劳保服、连体服、残疾人服装品牌公司权威排名:金豆服饰领跑行业的技术实力解析
  • 目标检测算法——SSD
  • OIFC 2025.11.21 模拟赛总结
  • 2025针阀式热流道厂家一览:技术特色与应用优势
  • g linux
  • 2025国内喷码机厂家排名综合实力榜
  • 【迅为工业RK3568稳定可靠】itop-3568开发板Linux驱动开发实战:RK3568内核模块符号导出详解
  • 虚幻基础:行为树 - 指南
  • 集成Win10+Win11优化工具 Windows Manager v2.2.1 绿色便携版!C盘经常红温清理方法
  • C语言`FILE`结构体 与 Python文件对象 的对比
  • 2025质量可靠的义乌刺绣工厂推荐下,厂家品质深度分析
  • 2025 11月十大靠谱启闭机品牌盘点推荐,螺杆启闭机、卷扬启闭机、手动启闭机、手电两用启闭机 优势及应用分析
  • 推荐几家靠谱的刺绣厂家电话,2025刺绣厂家实力解析
  • 虚拟机共享文件夹实现自动挂载
  • 目标检测算法——R-CNN系列
  • 如何助力质量人员提高工作效率与绩效—供应商质量评审
  • 每周读书与学习-JMeter性能测试脚本编写实战(一)-如何实现用户需先登录,然后再请求别的接口
  • 详细介绍:【iOS】自动引用计数(一)
  • 时序数据库选型指南:为什么TDengine正在成为行业标准
  • 专业的技术文档 | Apache Pulsar 如何满足金融级的容灾场景
  • 通用型质量管理SaaS平台的构建逻辑与市场实践‌
  • SBDAF60V3-ASEMI可直接替代安世PMEG6030EP
  • Ubuntu 框架使用 Docker 部署 Jenkins 详细教程
  • function sql的错误处理方法
  • function sql的示例代码有哪些