配置化开发是否可行?
遇到的问题
想把一切代码都搞成可配置,手里拿着锤子,眼里都是钉子。
分析
在解决一个难题时,如果解决的成本过高,可以先判断该问题是否有解。
那是否所有代码都可以通过配置化实现?
答案是:可以。
想一想撑起互联网的网络协议,配置也是协议的一种,双方遵守约定进行交互。
既然如此,那是不是可以大胆地去做配置化开发了?
基本上是的,但要注意避免写出不可预期结果的代码。
什么意思呢?
拿函数式编程范式中的纯函数类比一下:一个纯函数,如果输入相同,则输出也相同;反之,如果结果错了,那只有一种可能,就是输入错了。解 Bug 只需关注输入即可,这种编程范式大大降低了出错概率,是保证软件质量的首选。
配置化开发中的配置就是传入组件的输入,所以在设计组件时,要做到尽量所有状态和逻辑都直接依赖输入,组件直接如果有交互,也要明确知道其结果,避免出现不可预期的情况发生。
问题 2
大家都依赖配置,没人去熟悉代码了。年久失修的代码没人敢改。
分析
不排除不会出现这种情况,但这种情况是任何一个软件项目都可能会出现的,与配置化开发没有直接关系。
且看配置化对整个软件代码产生了哪些变化:
首选,配置化将容易变化的部分集中放到一个地方,相比没有配置化的代码相当于增加了一个维度来梳理代码,而且这个维度对代码维护性来说,是影响最大的,因为它本身就是针对容易变化做的提取;
完成配置化之后,只要能通过配置完成的需求,就不需要再改代码,代码的稳定性加强了许多。
所以,相比没有实施配置化的代码,其维护性是更好的,
至于当心代码没人熟悉,主要是当心当配置不能满足需求时,非第一作者的维护者是否能保质保量完成。
这里有个反直觉的思维习惯,配置化并没有改变代码的整体结构,虽然让代码复杂了些,但让代码更紧凑了,可以说是让代码潜在的坑 Bug
变少了。
所以,配置化也是一种重构,而重构后的代码,更容易修改且安全。
版权声明: 本文为 InfoQ 作者【顿晓】的原创文章。
原文链接:【http://xie.infoq.cn/article/1e49b4c3ca20cf2393da2d29d】。文章转载请联系作者。
评论