• 程序员修炼之道系列 | 可逆性


    在软件设计中,我们通常会做出很多决定,比如,选择哪种架构模式?使用什么技术实现?这些决定会直接影响软件的设计方向。为了让软件在长期范围内容易应对变化,我们做的每一个决定都要遵循可逆性原则,以易于变更为前提。

    关键的决定不易逆转
    2012年,奇虎360公司推出了一款分享式云盘。基于360公司的安全承诺,很多用户选择在没有备份的情况下,将自己珍贵的文件资料存进360云盘。但到2016年,360云盘宣布将逐步关闭个人云盘服务,这让全国的360云盘用户纷纷开始“抢救”资料。下载量的激增,导致下载速度变慢,许多用户只好被迫放弃部分文件,优先下载更有价值的内容。

    云盘关闭事件给360公司带来了巨大的冲击,同样也给没有备份资料的用户带来了难以估计的损失。

    在项目初期,团队一般会面临很多选择,而随着需求的逐渐细化,产品的架构也逐渐成形,选择会越来越少。因此,一旦做出不可逆的关键决定,日后的更改就会变得异常困难。

    避免做出不可逆的关键决定
    避免做出不可逆的关键决定,可以从以下几个方面入手:
     1.灵活的代码
    高耦合的代码会增加修复难度,因此,团队可以通过解耦代码,来保持代码的灵活性。同时,也可以编写更少的代码,以实现更安全、更容易的变更。
     2.灵活的架构
    在保持代码的灵活性之外,还要考虑在体系结构、部署和供应商集成等方面保持灵活性,让日后的修改更为容易。
    3.为随时到来的意外做好准备
    保持“危机意识”,随时准备一个Plan B。一只亚马逊雨林中的蝴蝶,偶尔扇动几下翅膀,可以在两周以后引起德克萨斯州的一场龙卷风。这是我们常说的“蝴蝶效应”。实际上,尽管我们无法控制蝴蝶扇动翅膀,也无法阻止即将到来的龙卷风,但可以提前准备防范措施,以应对龙卷风的威胁。

    总之,我们不清楚未来会发生怎样的变化,但我们清楚的是,要确保自己的决定能够适应不同的变化。你的决定可逆吗?

    《程序员修炼之道》更多精彩视频:https://www.zentao.net/programmer.html

  • 相关阅读:
    eclipse编码格式设置教程、如何为eclipse设置编码格式?
    Eclipse中使用SVN
    个人mysql配置命令
    MySQL新建用户,授权,删除用户,修改密码等命令
    MySQL修改root密码的多种方法
    MySQL 5.6 for Windows 解压缩版配置安装
    在windows下安装mysql5.6.24版本
    CS231n assignment2 Q3 Dropout
    CS231n assignment2 Q1 Fully-connected Neural Network
    CS231n assignment2 Q2 Batch Normalization
  • 原文地址:https://www.cnblogs.com/zentao/p/15018768.html
Copyright © 2020-2023  润新知