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流程步骤