写点什么

重读《重构 2》- 封装变量

用户头像
顿晓
关注
发布于: 2021 年 04 月 16 日
重读《重构2》- 封装变量

6.6 封装变量(Encapsulate Variable)

把变量封装成函数,理想情况就是函数内部只有临时变量,函数之间不再共享变量,如果有共享的情况,则通过函数操作。

封装是为了让变化可控,可以查看封装封装函数的调用来跟踪。


在改名或搬移函数的过程中,总是可以比较容 易地保留旧函数作为转发函数(即旧代码调用旧函 数,旧函数再调用新函数)。这样的转发函数通常 不会存在太久,但的确能够简化重构过程。

-- 这是重构的核心思想之一。


封装变量的指导思想就是限制对变量的使用范围,尤其是对其修改的限制。


这里引出第二个策略:限制

对变量的无限制使用是 bug 之源,有的语言使用全不可变变量来避免这个问题,有的语言则提供开发建议多使用不可变变量,或者变量默认不可变,直到 Rust 立志彻底解决这个问题,发明了 ownership。


所以,变量封装的最佳实践已经有了,就是 ownership。

对于其他语言,则在封装变量时尽量多参考 ownership 的做法:

1、变量传递时,都通过 clone 副本的方式;不要觉得浪费,需要 clone 的情况其实不多;

2、函数签名/参数+返回值默认只读,以此来限制对变量的无意识修改;

3、变量需要改写时,封装函数来操作;即今天的主题。

4、变量最好只传递一次,好控制范围;即不要把你接收到的变量,再传给别的函数;个别情况则 clone 副本传递。


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

顿晓

关注

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

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

评论

发布
暂无评论
重读《重构2》- 封装变量