设计可复用的函数:小型、纯函数与可组合性
作者主张设计组合函数(compounding functions),即小型、纯且可组合的代码单元,以构建健壮且可维护的软件。纯粹性是基础:纯函数对相同输入始终返回相同输出且无副作用,因而值得信赖且易于测试。函数应小而单一职责,将复杂任务分解为可管理的单元,从而提升清晰度与可复用性。当将这些小型纯函数进行链式调用时,组合变得自然,常借助管道(pipelines)构建清晰的操作流。以数据流为导向设计函数,确保其仅接受所需输入,从而促进更高的可组合性。柯里化(currying)支持部分应用,从通用函数派生出专用函数,进而增强可复用性。组合函数的一个显著优势是简化测试:纯且小型的函数所需设置极少,且无需模拟(mocking)。在追求可组合性的同时,必须避免过度抽象,确保函数提供明确的概念价值,而非仅仅封装其他调用。向组合函数重构涉及逐步将不纯函数转换为纯函数、提取逻辑块,并通过管道重新组合,整个过程由测试引导。这一纪律在开发中带来显著收益,包括提升可读性、可维护性和调试效率。当函数被设计为可靠的构建块时,新增功能如同组装而非从零开始。从小处着手,重构一个复杂函数,即可展现良好设计所带来的令人惊讶且日益增长的积极影响。