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

发布时间:2026/7/26 2:41:53
影刀RPA代码可读性实践:写出六个月后自己还看得懂的流程 影刀RPA代码可读性实践写出六个月后自己还看得懂的流程作者林焱一个真实故事六个月前我写了一个自动抓取商品价格并生成日报的流程当时赶时间变量名叫a、b、temp1、temp2没有注释子流程叫子流程1、“子流程2”。六个月后客户让我加一个对比昨天价格标红的功能我花了两小时才看懂自己当初写了什么。那次之后我开始认真对待流程的可读性。这篇文章是我整理的实践方法。为什么流程可读性重要你不只写一次90%的流程都会被修改——加功能、修bug、适配网页改版不只你一个人用发给同事、客户、发到影刀市场别人要能看懂调试效率可读性好的流程找bug的时间减少一半以上未来的你是另一个人三个月后你已经不记得当时的逻辑了变量命名最基础也最重要原则名字要说明这个变量是什么不是这个变量怎么用❌ 差命名a 获取文本() temp 处理(a) result 输出(temp) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3a0066c777ea4ebbbbc8ca4cc3394048.png#pic_center)✅ 好命名商品名称 获取文本() 清洗后的商品名称 去除空格(商品名称) 导出的商品名称 格式化(清洗后的商品名称)常见变量命名规范变量类型推荐命名方式示例列表/集合名词列表商品列表、URL列表计数器名词数量/计数已处理数量、错误计数布尔值是否/Has前缀是否登录成功、是否最后一页临时中间变量临时名词临时商品名、临时URL配置参数配置名词配置_最大重试次数、配置_等待秒数索引名词索引/序号当前页索引、行序号踩坑中英文混用影刀支持中文变量名但如果你的流程要被不懂中文的人使用或者调用 Python 脚本纯中文变量名会造成编码问题。建议店群矩阵自动化突破运营极限纯影刀内部流程用中文直观涉及 Python/API 调用的用英文或拼音子流程命名要说清楚做什么不是叫什么❌ 差命名子流程1 处理数据 执行操作✅ 好命名登录淘宝账号 从列表页提取商品信息 将商品数据写入Excel 检查是否还有下一页命名格式建议动词对象可选条件打开商品详情页✅判断当前页是否为最后一页✅重试登录最多3次✅注释写在不显而易见的地方很多人要么不写注释要么注释废话连篇。不需要注释的地方// 点击登录按钮 点击(登录按钮)这个注释没有任何价值指令名称本身已经说明了一切。需要注释的地方说明为什么这么做不是做了什么// 等待3秒而不是1秒——这个网站的登录验证是异步的1秒不够 等待(3000) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55a5585fcfd54a0999a1c2d19530b65f.png#pic_center)标记已知的坑// 注意这个XPath在2024年10月后的新版页面里失效了 // 如果遇到元素找不到检查是否触发了AB测试新版本 获取元素(.product-title)解释业务逻辑// 价格变动超过5%才记录——过滤日常小波动只关注异常价格 If abs(新价格 - 旧价格) / 旧价格 0.05: 记录价格变动标记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 实践记录