A Philosophy of Software Design读书笔记——复杂度下移

本章讲解如何创建一个深的模块。

当要新建一个新的模块时,有两种方式:1、要模块用户处理复杂度;2、模块内部处理复杂度。如果复杂度关系到模块内部的功能,则第二种方式更好,即要将复杂度下移

配置参数

配置参数有时会增加复杂度,将参数暴露给使用者,让使用者决定模块的行为,比如缓存大小、重试次数。这种行为在当前软件开发中很流行。

某些情况下,使用者更好的知道采用模块中的那种行为更合适,开发者很难决定模块的行为,比如:某些请求的超时时间设置。

但是某些情况下,使用者不需要知道或者很难知道参数,比如网络中的丢包处理。

在使用配置参数之前,要搞清楚:是否一定要用户决定模块的行为,一些默认行为是否合理,如果实在无法避免,可以给配置参数类创建一个默认的构造函数,代表模块的默认行为,这样用户只需要解决特殊情况。

理想情况下,不需要提供配置参数,配置参数意味着复杂度处理不彻底。

再说几句

用默认行为可以降低复杂度,极端方式把所有功能集中到一个类中,这显然是不合理的,合理的降低复杂度方式:1、这个类就是实现这个功能的,那么抽象出这个类是合理的;2、在某个模块处理了复杂度之后,其他模块变得简单了;3、在实现的功能不变的情况下,接口变得简单

我们最终的目标是降低全局的复杂度,而不是某个模块的复杂度

总结

开发模块时,可以站在使用者的角度去看,而不是站在开发者的角度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值