耦合性 : 软件系统各结构之间是否相互独立。
内聚性 : 系统的各相关部分之间如何协作。
13.1.1 共享的可变数据
如果有多个类持有同一列表对象,那么这个列表究竟属于谁呢?
如果一个类既不修改它内嵌类的状态,也不修改其他其他对象的状态,使用return返回所有的计算结果,那么我们称其为纯粹的
或无副作用的
。
副作用就是函数的效果已经超出了自身的范畴。
下面是一些例子 :
- 除了构造器内的初始化操作,对类中数据结构的任何修改,包括字段的赋值操作。
- 抛出一个异常。
- 进行输入/输出操作。
不可变对象 : 它们一旦完成初始化就不会被任何方法修改状态。
13.1.2 声明式编程
一般通过编程实现一个系统,有两种思考方式。一种是专注于如何实现,另一种则更加关注要做什么。
"如何做"风格的编程,称之为“命令式”编程;采用"要做什么"风格的编程称为声明式编程。
13.1.3 为什么要采用函数式编程
函数式编程具体实践了声明式编程和无副作用计算。