Lobsters | 原文链接 | 2026-09-04 收录

Python 的函数式禅意:八条让代码更简单的经验法则

来源: testdouble.com — 2026-04-08

概述

Test Double 的 Kyle Adams 一篇实用向文章:借着「简单优于复杂」的 Python 之禅,给出八条把函数式编程原语当作简化 Python 码库的路标。逐条展开:地道代码优于非地道代码(Python 用列表推导而非处处 map,符合 Guido 的取舍);数据优于函数(医学剂量用查表而非算法,无逻辑即无需单测);纯函数优于不纯函数(double 恒返回 4,fetch_double 受网络牵制);纯函数优于类(类天生捆绑状态+行为更复杂);不纯函数与类不可避免就最小化它们(functional core, imperative shell);构造器无副作用优于有副作用(把取 token 挪到独立函数,避免污染 TimeService/TimeController 一层层上传);无 mock 的测试优于带 mock 的测试(mock 是需要、是副作用、是不纯的标志,大量 mock 常是代码味)。文章同时平和地回应 Guido 2013 年对函数式原语在 Python 可读性的质疑——过去十年 JS/TS 把这类原语普及给了「大多数程序员」,如今务实引入反而能导向简洁。

核心要点

金句

Mocking is often a code smell in tests. A large amount of mocking is stinky code; it is an indicator that a test subject's dependencies have grown too complex.(测试里的 mock 往往是一种代码味——大量的 mock 是发臭的代码,它标示着被测对象的依赖已经复杂得过头了。)
返回 Lobsters 首页