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

影刀RPA代码可读性实践:写出六个月后自己还看得懂的流程

影刀RPA代码可读性实践:写出六个月后自己还看得懂的流程

作者:林焱


一个真实故事

六个月前我写了一个"自动抓取商品价格并生成日报"的流程,当时赶时间,变量名叫abtemp1temp2,没有注释,子流程叫"子流程1"、“子流程2”。

六个月后客户让我加一个"对比昨天价格标红"的功能,我花了两小时才看懂自己当初写了什么。

那次之后我开始认真对待流程的可读性。这篇文章是我整理的实践方法。


为什么流程可读性重要

  1. 你不只写一次:90%的流程都会被修改——加功能、修bug、适配网页改版
  2. 不只你一个人用:发给同事、客户、发到影刀市场,别人要能看懂
  3. 调试效率:可读性好的流程,找bug的时间减少一半以上
  4. 未来的你是另一个人:三个月后你已经不记得当时的逻辑了

变量命名:最基础也最重要

原则:名字要说明"这个变量是什么",不是"这个变量怎么用"

❌ 差命名:

a = 获取文本() temp = 处理(a) result = 输出(temp) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3a0066c777ea4ebbbbc8ca4cc3394048.png#pic_center)

✅ 好命名:

商品名称 = 获取文本() 清洗后的商品名称 = 去除空格(商品名称) 导出的商品名称 = 格式化(清洗后的商品名称)

常见变量命名规范

变量类型推荐命名方式示例
列表/集合名词+列表商品列表URL列表
计数器名词+数量/计数已处理数量错误计数
布尔值是否/Has前缀是否登录成功是否最后一页
临时中间变量临时+名词临时商品名临时URL
配置参数配置+名词配置_最大重试次数配置_等待秒数
索引名词+索引/序号当前页索引行序号

踩坑:中英文混用

影刀支持中文变量名,但如果你的流程要被不懂中文的人使用或者调用 Python 脚本,纯中文变量名会造成编码问题。建议:

店群矩阵自动化突破运营极限!

  • 纯影刀内部流程用中文,直观
  • 涉及 Python/API 调用的用英文或拼音

子流程命名:要说清楚做什么,不是叫什么

❌ 差命名:

子流程1 处理数据 执行操作

✅ 好命名:

登录淘宝账号 从列表页提取商品信息 将商品数据写入Excel 检查是否还有下一页

命名格式建议:动词+对象+(可选:条件)

  • 打开商品详情页
  • 判断当前页是否为最后一页
  • 重试登录(最多3次)

注释:写在"不显而易见"的地方

很多人要么不写注释,要么注释废话连篇。

不需要注释的地方:

// 点击登录按钮 点击("登录按钮")

这个注释没有任何价值,指令名称本身已经说明了一切。

需要注释的地方:

  1. 说明"为什么这么做",不是"做了什么"
// 等待3秒而不是1秒——这个网站的登录验证是异步的,1秒不够 等待(3000) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55a5585fcfd54a0999a1c2d19530b65f.png#pic_center)
  1. 标记已知的坑
// 注意:这个XPath在2024年10月后的新版页面里失效了 // 如果遇到元素找不到,检查是否触发了AB测试新版本 获取元素(".product-title")
  1. 解释业务逻辑
// 价格变动超过5%才记录——过滤日常小波动,只关注异常价格 If abs(新价格 - 旧价格) / 旧价格 > 0.05: 记录价格变动
  1. 标记TODO和已知问题
// TODO: 这里还没处理多规格商品的情况,只取了第一个规格的价格 // 等需求确认后再加

流程结构:让人一眼看懂全貌

主流程要"高度概括"

主流程只做流程编排,不做具体操作:

❌ 差结构(主流程里堆满细节):

打开浏览器 导航到 https://... 等待页面加载 查找用户名输入框 输入用户名 查找密码输入框 输入密码 点击登录按钮 等待2秒 // ... 接下来200行

✅ 好结构(主流程是目录):

调用子流程[初始化浏览器环境] 调用子流程[登录账号] 调用子流程[采集商品数据] 调用子流程[导出到Excel] 调用子流程[发送完成通知]

看主流程,5秒内明白这个流程在做什么。

把相关逻辑聚在一起

不要因为"这段逻辑很短"就直接写在主流程里,该拆的要拆:

  • 登录相关的所有操作 →登录账号子流程
  • 错误处理的所有逻辑 →处理错误子流程
  • 数据清洗的所有操作 →清洗商品数据子流程

文件和路径:用变量代替硬编码

❌ 到处硬编码路径:

写入文件("C:/Users/linyan/Desktop/data.xlsx", 数据) 读取文件("C:/Users/linyan/Desktop/config.json") 写入日志("C:/Users/linyan/Desktop/logs/run.log")

✅ 在流程开头统一定义:

temu店群自动化报活动案例

// === 路径配置 === 基础路径 = "C:/Users/linyan/Desktop/" 数据文件路径 = 基础路径 + "data.xlsx" 配置文件路径 = 基础路径 + "config.json" 日志文件路径 = 基础路径 + "logs/run.log" // 之后用变量引用 写入文件(数据文件路径, 数据)

换电脑或者给别人用时,只需要改一处。


日志:给未来的调试留路标

在关键节点打日志,不是调试时才想起来:

// 流程开始 打印日志("=== 流程开始 === " + 获取当前时间()) // 每处理一个商品 打印日志("正在处理第 " + 当前序号 + " 个商品:" + 商品名称) // 关键决策点 打印日志("登录结果:" + 登录状态 + ",用时:" + 耗时 + "ms") // 流程结束 打印日志("=== 流程完成 === 共处理 " + 处理数量 + " 个,错误 " + 错误数量 + " 个")

出问题时,日志告诉你:流程跑到哪了、当时的数据是什么、哪一步开始不对。


实战:一个前后对比案例

重构前(某个我接手维护的流程)

设置变量 x = "" 打开网页 url1 等待(2000) 获取元素 e1 设置变量 x = e1.text If x != "": 设置变量 y = split(x, "|")[0] 设置变量 z = split(x, "|")[1] 写入Excel(sheet1, row_idx, 1, y) 写入Excel(sheet1, row_idx, 2, z) 设置变量 row_idx = row_idx + 1

重构后

// 从商品详情页提取名称和价格,写入结果表格 打开商品详情页(商品URL) 商品原始文本 = 获取商品文本(商品详情元素) If 商品原始文本 不为空: 商品名称 = 解析商品名称(商品原始文本) // 取"|"前半部分 商品价格 = 解析商品价格(商品原始文本) // 取"|"后半部分 写入结果表格( 工作表: 结果Sheet, 行号: 当前行序号, 商品名称: 商品名称, 商品价格: 商品价格 ) 当前行序号 = 当前行序号 + 1

重构后:变量名可读、逻辑清晰、子流程封装了细节、注释说明了解析规则。


检查清单:发布前过一遍

  • 所有变量名能说明它是什么
  • 子流程名称是"动词+对象"格式
  • 硬编码路径/URL/账号都提取到配置区
  • 关键节点有日志打印
  • 不明显的逻辑有注释说明"为什么"
  • 主流程是概要,细节在子流程里
  • 有 TODO 标记还没完成的部分

小结

可读性好的流程不是为了好看,是为了你自己和合作者能高效维护它

花在命名和结构上的时间,会在第一次修改 bug 时加倍收回来。


作者:林焱|飞行社 RPA 实践记录

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

相关文章:

  • AI与传统系统的混合架构设计与工程实践
  • AIM即时通讯技术架构解析:从OSCAR协议到现代启示
  • Ubuntu 安装 MongoDB 完整教程
  • Python里的这个quote()函数,竟藏着这么大秘密
  • 大模型与Agent技术架构解析与应用实践
  • Anthropic Harness:AI安全评估开源框架解析与应用
  • Kubectl命令详解与Kubernetes部署实战指南
  • AI Agent如何实现跨领域复杂任务规划
  • Docker开发环境配置全攻略:从入门到生产部署
  • Kali Linux与SEToolkit实战:钓鱼页面克隆与防御原理深度解析
  • 115网盘2年VIP会员150元:长期存储需求与性价比分析
  • AI视觉检测在图文印刷质检中的应用与优化
  • 2026年度安徽室内甲醛检测服务综合优选指南 - 装修教育财税推荐2026
  • 数字人直播技术解析与电商流量运营实战
  • 3分钟实战手册:用Real-ESRGAN-GUI轻松拯救你的模糊照片
  • 基于RetinaNet的施工安全智能检测系统开发实践
  • AppleRa1n:利用硬件漏洞绕过iOS 15-16激活锁的原理与实操
  • AI工具如何提升本科开题报告写作效率
  • 【问题】The following artifacts could not be resolved: ring-cors:ring-cors:pom:0.1.5 (present, but unava
  • Ubuntu静态IP配置指南:从基础到高级实践
  • FastSAC:15分钟训练人形机器人运动策略的稳定配方与工程实践
  • (2026最新)宿迁漏水检测维修一站式上门服务-本地专业防水补漏公司TOP5推荐:暗管漏水检测精准定位 - 安佳防水
  • 2026 年新消息:灵川比较好的大棚运输车制造厂家哪家强,揭秘!高效率大棚运输的秘密武器-华鑫机械设备 - 行业推荐官【认证】
  • 基于YOLOv10的硬币识别系统开发与实践
  • Ubuntu 22.04 LTS国内镜像源下载与优化指南
  • 数学研究范式变革:计算化、形式化验证与机器学习辅助的转型
  • Xmind强制安装C盘?三步彻底解决空间占用问题
  • AI浏览器架构变革:从智能体到任务自动化的开发实践
  • AI代码质量评估:构建高效可靠的机器学习工程实践
  • AI绘画新突破:视觉条件扩散模型实现所见即所得