编程学习网 > 编程语言 > Python > 别再用 utils.py 了!这 3 个设计模式让你的 Python 代码更清晰
2026
05-08

别再用 utils.py 了!这 3 个设计模式让你的 Python 代码更清晰


项目里一旦出现 utils.py,我第一反应 usually 不是“方便”,而是“后面多半要烂”。

今天往里塞一个 format_time(),明天塞一个 send_sms(),后天再补个 check_permission()。过不了多久,这文件就像公司楼下五金店,啥都能买到,代价是你永远不知道东西该去哪找,也不知道改一行会不会把别处带崩。

我见过最离谱的一个 utils.py,两千多行,里面同时有 Excel 导出、订单状态转换、Redis key 拼装、签名校验。出问题时,堆栈里全是 utils.xxx,看着就烦。这种代码不是不能跑,是排查起来很脏。

真要拆,不用上来就搞大重构。先把那种“塞一起纯图省事”的代码,按职责掰开。下面这 3 个模式,够用了。

1)策略模式:别再写一串 if else 了

最常见的烂法,是不同渠道、不同类型、不同规则,硬堆在一个函数里。

刚开始三种还行。等运营再加“直播间专享”“企业团购”“会员日叠券”,这个函数就开始发臭了。

这种地方我一般直接上策略模式,不和 if else 纠缠。

好处不是“高级”,是后面加规则时你不用回头碰老代码。线上这类逻辑最怕改旧分支,尤其结算、优惠、风控,动一下就容易带出历史 bug。

2)工厂模式:别把对象创建到处写

还有一种 utils.py 味道也很重:各种客户端初始化到处复制。

这种代码刚写出来很顺手,后面最麻烦。因为创建对象的细节散得到处都是,改个配置、补个重试、加个超时,要全项目搜。

工厂模式不复杂,说白了就是把“怎么创建”收口。

这地方值钱的是“统一出口”。比如以后短信要切供应商,我会优先改工厂,不会去全局抓 SmsClient(...)。排障的时候也一样,先看工厂吐出来的是谁,比满项目翻要省事。

3)模板方法:流程别复制,留钩子就行

还有一类烂代码,看着不像 utils.py,其实本质一样:流程复制。

导入 CSV 一份,导入 Excel 一份,导入接口数据再来一份。每份代码都是“读数据、校验、清洗、入库”,只是细节不同。

这种我一般不让大家继续 copy 了,直接抽流程骨架。

模板方法的意思不是炫技,就是把稳定流程钉住,把变化点留给子类。这样你后面看代码,一眼就知道流程没跑偏,问题大概率在 clean() 还是 validate(),定位很快。

utils.py 最大的问题,不是文件名丑,是它默认接受“无边界增长”。什么都能塞,最后就什么都说不清。

所以我现在看 Python 项目,先不看框架,先看有没有一坨公共函数到处乱飞。真有,八成已经开始欠债了。

能按规则切换的,用策略模式。 能把创建逻辑收口的,用工厂模式。 能把公共流程压住的,用模板方法。

别再往 utils.py 里塞了。那不是复用,那是堆积。

以上就是“别再用 utils.py 了!这 3 个设计模式让你的 Python 代码更清晰的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取