在软件设计中,我们通常会做出很多决定,比如,选择哪种架构模式?使用什么技术实现?这些决定会直接影响软件的设计方向。为了让软件在长期范围内容易应对变化,我们做的每一个决定都要遵循可逆性原则,以易于变更为前提。
关键的决定不易逆转
2012年,奇虎360公司推出了一款分享式云盘。基于360公司的安全承诺,很多用户选择在没有备份的情况下,将自己珍贵的文件资料存进360云盘。但到2016年,360云盘宣布将逐步关闭个人云盘服务,这让全国的360云盘用户纷纷开始“抢救”资料。下载量的激增,导致下载速度变慢,许多用户只好被迫放弃部分文件,优先下载更有价值的内容。
云盘关闭事件给360公司带来了巨大的冲击,同样也给没有备份资料的用户带来了难以估计的损失。
在项目初期,团队一般会面临很多选择,而随着需求的逐渐细化,产品的架构也逐渐成形,选择会越来越少。因此,一旦做出不可逆的关键决定,日后的更改就会变得异常困难。
避免做出不可逆的关键决定
避免做出不可逆的关键决定,可以从以下几个方面入手:
1.灵活的代码
高耦合的代码会增加修复难度,因此,团队可以通过解耦代码,来保持代码的灵活性。同时,也可以编写更少的代码,以实现更安全、更容易的变更。
2.灵活的架构
在保持代码的灵活性之外,还要考虑在体系结构、部署和供应商集成等方面保持灵活性,让日后的修改更为容易。
3.为随时到来的意外做好准备
保持“危机意识”,随时准备一个Plan B。一只亚马逊雨林中的蝴蝶,偶尔扇动几下翅膀,可以在两周以后引起德克萨斯州的一场龙卷风。这是我们常说的“蝴蝶效应”。实际上,尽管我们无法控制蝴蝶扇动翅膀,也无法阻止即将到来的龙卷风,但可以提前准备防范措施,以应对龙卷风的威胁。
总之,我们不清楚未来会发生怎样的变化,但我们清楚的是,要确保自己的决定能够适应不同的变化。你的决定可逆吗?
《程序员修炼之道》更多精彩视频:https://www.zentao.net/programmer.html