写点什么

配置化开发是否可行?

用户头像
顿晓
关注
发布于: 2021 年 04 月 03 日
配置化开发是否可行?

遇到的问题

想把一切代码都搞成可配置,手里拿着锤子,眼里都是钉子。

分析

在解决一个难题时,如果解决的成本过高,可以先判断该问题是否有解。


那是否所有代码都可以通过配置化实现?

答案是:可以。

想一想撑起互联网的网络协议,配置也是协议的一种,双方遵守约定进行交互。


既然如此,那是不是可以大胆地去做配置化开发了?

基本上是的,但要注意避免写出不可预期结果的代码。


什么意思呢?

拿函数式编程范式中的纯函数类比一下:一个纯函数,如果输入相同,则输出也相同;反之,如果结果错了,那只有一种可能,就是输入错了。解 Bug 只需关注输入即可,这种编程范式大大降低了出错概率,是保证软件质量的首选。


配置化开发中的配置就是传入组件的输入,所以在设计组件时,要做到尽量所有状态和逻辑都直接依赖输入,组件直接如果有交互,也要明确知道其结果,避免出现不可预期的情况发生。


问题 2

大家都依赖配置,没人去熟悉代码了。年久失修的代码没人敢改。


分析

不排除不会出现这种情况,但这种情况是任何一个软件项目都可能会出现的,与配置化开发没有直接关系。


且看配置化对整个软件代码产生了哪些变化:

  • 首选,配置化将容易变化的部分集中放到一个地方,相比没有配置化的代码相当于增加了一个维度来梳理代码,而且这个维度对代码维护性来说,是影响最大的,因为它本身就是针对容易变化做的提取;

  • 完成配置化之后,只要能通过配置完成的需求,就不需要再改代码,代码的稳定性加强了许多。

所以,相比没有实施配置化的代码,其维护性是更好的,


至于当心代码没人熟悉,主要是当心当配置不能满足需求时,非第一作者的维护者是否能保质保量完成。

这里有个反直觉的思维习惯,配置化并没有改变代码的整体结构,虽然让代码复杂了些,但让代码更紧凑了,可以说是让代码潜在的坑 Bug 变少了。

所以,配置化也是一种重构,而重构后的代码,更容易修改且安全。

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

顿晓

关注

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

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

评论

发布
暂无评论
配置化开发是否可行?