hard to test=>pure functions
副作用导致了难以预测 无法信任


容易测试的例子
可以信任







hard to follow=>declarative code
imperative 命令式
告诉你一步一步怎么做
for loop里面很难去理解
declarative 声明式
告诉机器我要的结果,我不需要写出来步骤


code breaks unexpectedly=> immutable Data
原因一:Mutable Data 可变的数据


Imuutable Data 不可变的数据
使用Object.freeze
Create New State 创建新的状态



Too much code=>curried,composable functions
重复的函数声明

接受两个参数
每次接受一个参数,然后返回新函数
柯里化函数
偏函数

使用函数组合搭积木

承载了太多功能的函数
使用pipe把责任步骤分担出去






scary to refactor =>strong,static types









oh! null => Maybe and monads








Monads
不用担心可能会失败,只用担心一系列操作a流程步骤

Recap





