最近在学习有限状态机,读到一篇文章,作者提出我们在软件开发中要区分变化的和不变的,将他们分离开来。
看到这里很受启发,之前在项目开发中对这一点没有特别清晰的认识,写代码的时候也会提取一些代码,将他们作为独立的模块,让其他代码调用,提取的原则有两个:
1、多个地方同时使用这一块功能/业务
2、这一块代码具有工具的性质
为了可以集中管理,需要修改这块代码的时候,只要在一个地方修改就可以了。
不过我对这种处理方式一直有个疑惑,有些代码,虽然多个地方都会使用它,但是其中一些地方随时会对这块代码进行修改,同时另外一些地方使用这块代码的时候是不会对他进行修改的,在业务代码中这种情况比较常见。以前对于这种场景就会很纠结,有时候会粗暴的将他们全部提取到一起,有时候会只其中的一部分。也有请教过比较资深的同事,给出的建议是根据自己的经验来权衡,这个回答并没有解决我的疑惑。直到看到这篇文章,提取的原则应该是这块代码是否会发生变化,如果它是不变的那就提取出。或者说是将变化的代码和不变的代码分离开来。
参考:
利用状态机处理复杂业务逻辑(一)
网友评论