写点什么

函数和对象的关系

用户头像
顿晓
关注
发布于: 2021 年 05 月 10 日
函数和对象的关系

之前讨论了类型和对象之间的区别,这次讨论函数和对象的关系,和 OO 相关的函数有何不同?


函数也分很多种,认识到这一点,并区别对待,是成熟编程的标志.

独立函数:可以被 mod/namespace 这些限定访问范围,一个函数没想好附属的类型和对象,可以先放这;

类型附属函数:只做类型自己的一些计算;

对象关系函数:对象间的逻辑计算,有主客体之分,一般附属在主体上。可见影响代码质量的是操作对象的函数。


对象函数的槽点 1: 只加不减。

对象间的依赖关系应该够用即可,如果碰到需要添加的情况,更好的做法是定义新对象及新的函数。当老对象无人依赖时,可以放心的删掉。


这点契合了“只读”原则,当需要修改对象定义时,新增对象总好过修改旧对象。


对象函数的槽点 2: 循环依赖。

尤其是随意添加回调函数时,为了图省事,quick dirty 式的修改;

这时先用依赖倒置定义个新的接口来解除循环,变成单向依赖,然后再考虑接口的附属对象。

最后依赖倒置一般发生在分层、Core/Plugin 的地方,这时需要认真考虑,给出稳定不变的接口设计。


之前说过,原则是软件界的公理;那依赖倒置相关的接口定义,就是软件界的定理。所以,梳理对象函数时,重中之重是找出会循环依赖的关系,然后使用依赖倒置使之解耦,进一步通过框架固定下来;剩下的对象函数就都是单向依赖,提供周边功能;最后是类型函数这类纯函数。


至此,原则 Top3 均已提及:只读、开闭、依赖倒置。如能贯彻落实,软件将健康生长。

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

顿晓

关注

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

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

评论

发布
暂无评论
函数和对象的关系