在引言中,我们提到了函数式编程可以用规范的方式将函数作为参数装配为规模更大的程序。在本章中,我们看到了一个以这种函数式方式设计的具体例子。我们定义了一系列函数来描述区域,每一个函数单打独斗的话都并不强大,然而装配到一起时,却可以描述你绝不会想要从零开始编写的复杂区域。
解决的办法简单而优雅。这与单纯地将 canSafelyEngageShip1(_:friendly:) 函数写成一些分开的方法那种重构方式是完全不同的。我们确定了 如何 来定义区域,这是至关重要的设计决策。当我们选择了 Region 类型之后,其他所有的定义就都自然而然,水到渠成了。这个例子给我们的启示是,我们应该 谨慎地选择类型 。这比其他任何事情都重要,因为类型将左右开发流程。