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

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

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

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

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

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

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

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

    当然缺点也是有的。

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

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

  • 相关阅读:
    IKAnalyzer
    stanford corenlp的TokensRegex
    Linux网络编程-tcp缓存设置
    Java NIO(2):缓冲区基础
    Java NIO(1):迟迟登场的NIO
    git的笔记和使用中的一些技巧的总结
    vagrant 系列 博客
    flutter创建swift kotlin项目
    react eject 命令失败
    react native react-native-vector-icons/Ionicons 出现 Unrecognized font family的错误
  • 原文地址:https://www.cnblogs.com/mkxzy/p/7058305.html
Copyright © 2011-2022 走看看