分离变与不变
——软件设计的基本原则分析
小到代码,大到模块、系统,我们都可以将其粗略的分为两个部分:变化的部分和不变的部分。有些代码,不管是维护人员来了、走了,还是版本换了、变了,它依然是那样。可怕的是另一部分,它们在不停的变化,每个新来的菜鸟都要去改一下,每个新的版本,它们都要动一下,总是让人头疼不已。更可怕的是变化的部分和不变的部分始终都纠结在一起,欲拆不能,强拆不忍,每次小小的改动都要牵连到一大片,修改这样的代码、模块,相当于将自己推入“焦油坑”,退拔皆不能,其中的痛苦只能敲掉门牙往肚里吞。
分离变与不变,是软件设计的一个基本原则。其背后蕴藏着丰富的软件工程思想,例如:信息的分装与隐藏、系统的模块化、使用分层构架等等等。其中“变”是指易变的代码或者模块,当然,“不变”就是指系统中不易变化的部分。无论是开发人员还是设计人员,使用这条原则,都可以带来可观的收益,且看以下两个本人体会到的实例。
一、代码危机
在此,我们将一个开发员维护的代码总量看作是100,如果这些代码没有使用变与不变分离的原则,只是为了完成一定的功能而凑合在一起,那么他维护的总的代码量可能是100。实际上,代码可以分为3个部分:大概50%是不变的部分&#