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

📅 2026/7/26 3:01:42 👁️ 阅读次数 📝 编程学习
影刀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 实践记录