为什么说对象是个好东西但是面向对象是个糟糕的思路
忽然之间一点感悟, 从函数的角度分析, 面向对象是个坏东西
对象是个好东西
- 就是键值对
- 值可能是函数, 也就是说, 函数也是值
- 如果是lisp这类语言, 键可能也是函数
面向对象其中也有精华
- 类库的组织方式
- 代码module, 代码分层, 把分治机制发挥到了极致
但是总体而言, 面向对象是个糟糕的思路
我们从函数说起
- 第一等级的函数是纯函数, 也就是说, 输出完全依赖并且只依赖于输入, 但是这里要特别注意, 即便如此同样的输入也不一定产生同样的输出, 也就是说, 输入和输出并不是一一对应的, 例如取随机数的函数, 或者某个随机类算法的函数. 每次拿到的不一定是同一个结果.
- 函数依赖于内部/环境状态, 比如闭包, 比如自带缓存的函数.
- 函数依赖于数据库, 也就是函数要读取或者写入持久化数据.
- 函数依赖于内存/缓存…
- 函数依赖于其他函数的状态, 这种情况下, 其实就比较糟糕了, 调试和维护都会非常困难, 基本可以说是bug窝.
特别神奇的是, 面向对象其实批量制造的是第5级的函数….