说是读后感,根本算不上,当记个笔记,划个重点吧。

Reference

封装

将相关的一堆函数和一堆对象放在一起,对外函数作为操作通道,对内则以变量作为操作原料。只留给外部程序员操作方式,而不暴露具体执行细节。

1. 将数据结构和函数放在一起是否真的合理?

函数:做事情的,有输入,有执行逻辑,有输出。
数据结构:表达数据的,要么作为输入,要么作为输出。

在并行计算时,由于执行部分和数据部分被绑定在一起,这就使得这种方案制约了并行程度。
在为了更好地实现并行的时候,业界的工程师们发现了一个新的思路:函数式编程。将函数作为数据来使用,这样就能保证执行的功能在时序上的正确性了。
但你不觉得,只要把数据表达和执行部分分开,形成流水线,这不就能够非常方便地将并行数提高了么?

2. 是否所有的东西都需要对象化?

例 NSNumber:

1. 弱化了数值的类型,不能直接做运算,拆成数值,然后运算,再变成 NSNumber。
2. 运算时,不知道原始数据是什么类型,拆箱装箱过程中难免会造成内存浪费(uint8_t -> unsigned int)。

3. 类型爆炸

由于数据和函数绑定到了一起,在逻辑上有派生关系的两种对象往往可以当做一种,以派生链最上端的那个对象为准。

总结

架构设计,第一步理清需求,第二步理清调用关系,第三步实现过程。