写点什么

重读《重构 2》- 以对象取代基本类型

用户头像
顿晓
关注
发布于: 2021 年 04 月 20 日
重读《重构2》- 以对象取代基本类型

7.3 以对象取代基本类型(Replace Primitive with Object)

一旦我发现对某个数据的操作不仅仅局限于打 印时,我就会为它创建一个新类。这些小 小的封装值开始可能价值甚微,但只要悉心照料, 它们很快便能成长为有用的工具。创建新类无须太 大的工作量,但我发现它们往往对代码库有深远的影响。


基本类型是语言抽象的最底层,业务领域的抽象是最高层;

为了让高层简单、稳定,需要抽象一套面向业务的对象,来做为业务描述的语言;

底层为高层的实现提供支持,一般在技术需求有变化时会进行变更,如性能需求发生较大改变。


另外,有一种“思维方式”大家要注意避免,常见的描述如:用 int 表示年龄,用 str 表示名字。

要逐步切换成:用 Age 表示年龄,用 Name 表示名字。

有些人会出现,“不直接对应到基本类型,就不会写代码”的情况,所以写出来的代码就如 7.3 中的例子那样,orders.filter(o => "high" === o.priority || "rush" === o.priority); 没有把细节封装起来,理解起来也困难。

理解困难就是个坏味道,会驱动着往简单发现发展,习惯用“简单的思维”思考后,就会先出现 7.3 例子中重构后的代码 orders.filter(o => o.priority.higherThan(xxx)),先在 higherThan 填充一个快速实现,如 return true; 让调用者代码能跑起来;然后再去实现函数细节。


以对象取代基本类型 大家可以把它当作这种思维方式的典型代表。


发布于: 2021 年 04 月 20 日阅读数: 11
用户头像

顿晓

关注

因观黑白愕然悟,顿晓三百六十路。 2017.10.17 加入

视频号「编程日课」 知识星球「俺的死党顶」

评论

发布
暂无评论
重读《重构2》- 以对象取代基本类型