zoukankan      html  css  js  c++  java
  • 系统设计笔记

    在不稳定的需求面前,尽量保持灵活性。

      多年的经验告诉我,国内软件开发的需求是极其不稳定的。比如说,原先某个字段是必填,后来又变成可选。又比如说原来实体类A和实体类B是一对多关联的,后来又变成多对多。

    虽然很多开发人员都非常反感这种需求变化,也包括我自己,但是不得不承认,这是现状,是一种常态,我们要去接受他。造成这种结果的原因有很多,由于篇幅有限,在这里我就不详细展开了。

      还记得在某本书里面看到过,软件开发需要考虑扩展性,要不是仅仅为当前功能而实现。当时没有太多感触,现在细想起来,的确非常有道理。看样子很多道理都需要亲身经历过才会有深刻体会。

    不是道理不够深刻,而是你没有经历过。那么考虑扩展性的优势何在呢?

      第一,适应需求变化更敏捷。这里用敏捷这个词来形容扩展性,是非常贴切的。很多系统就像意大利面条一团,扯也扯不开。在这样的系统里面,你想增加一个新的功能或者一个新的特性,需要付出很大的努力,而结果往往未尽如人意。而对于考虑了扩展性的系统来说,只需要很少的改动便能增加一个新的功能或者特性,感觉非常敏捷。

      第二,更少的Bug。因为软件开发不是一项孤立的工作,代码之间都是有依赖关系的,没有代码是能够孤立存在的。我们习惯于垂直划分系统来进行开发。这种设计方法有很多优点,比如开发人员之间的依赖比较少,大家可以并行开发。但是这个方法的缺点也是非常明显的,代码重复率高。为什么这么说呢?因为越上层的代码依赖越多,但是由于代码是垂直拆分的,就意味着所有代码都需要开发人员自己写,有个戏谑的说法叫“一揽子工程”。由于事先没有约定,很多开发人员都实现了同样的方法,这就造成了重复代码。

    当然缺点也是有的。

      第一,需要更多的开发测试时间

      第二,需要更强的专业技能

  • 相关阅读:
    Caffe学习系列(18): 绘制网络模型
    Caffe学习系列(17):模型各层数据和参数可视化
    android ------ RecyclerView 模仿淘宝购物车
    android ------- 开发者的 RxJava 详解
    android -------- 压缩图片文件工具类
    android -------- MVP+DataBinding 的使用
    android -------- ConstraintLayout Group和goneMargin(五)
    android -------- ConstraintLayout Guideline和Barrier(四)
    android -------- ConstraintLayout 宽高比和偏移量比(三)
    android -------- ConstraintLayout 约束属性(二)
  • 原文地址:https://www.cnblogs.com/mkxzy/p/7058305.html
Copyright © 2011-2022 走看看