美文网首页
对软件设计可扩展性的思考

对软件设计可扩展性的思考

作者: jackben | 来源:发表于2019-02-21 18:59 被阅读0次

通常设计软件的时候, 可扩展性是一个设计的考量点。 可扩展性的优点自然很多,如:增加需求的迭代速度, 提高维护效率。

但是最近在维护系统的过程中, 发现系统设计过于复杂, 导致学习成本和维护成本剧增。 背后的原因是为了增加系统的可扩展性, 增加软件的复杂度! 说白了,就是想太多了, 喜欢给自己添麻烦。

可扩展性, 是为了满足未来可能的需求,提前在软件内部实现了。  但是, 很多情况下, 系统的可扩展性增加了,但是以后再也没有用过它了, 却额外增加了系统复杂度。

所以, 在增加系统的扩展性之前, 有必要评估一下。可以从如下2个维度评估:

1. 目的是什么?

如果目的是为了满足未来需求。 那么需要对未来的需求做评估。 需求是确定的还是模糊的? 需求的实现时间点, 是1个月还是1年? 如果需求很模糊, 而且实现时间点未知或者超过半年, 完全没有必要去搞扩展性。

如果纯粹是自己想增加扩张性,以体现自己的设计功底或者最近学了牛逼的设计模式, 想往里套, 那么最好三思了, 别没事找事。

2. 会增加维护成本嘛?

如果因为引入了可扩展性, 导致了代码的可读性降低,那宁可放弃。 软件永远不是一个人维护, 在开发软件的时候,可读性要排在第一位。 如果可读性很差, 影响的不是一个人的效率, 而是所有维护该系统的人的效率。

该功能的学习成本高嘛? 如果学习成本很高, 意味着维护效率的降低。

所以, 在增加软件的扩展性之前, 要三思。 记得三思而行。 写代码永远不是最复杂的一项, 在动手之前,先想好怎么实现,然后说服自己和队员。

说了这么多废话,其实可以用一句话概括

过早优化是一切罪恶的根源

也可以用奥卡姆剃刀总结:

如无必要,勿增实体

相关文章

  • 对软件设计可扩展性的思考

    通常设计软件的时候, 可扩展性是一个设计的考量点。 可扩展性的优点自然很多,如:增加需求的迭代速度, 提高维护效率...

  • jmeter(一)基础介绍

    一,优点 开源工具,可扩展性非常好 高可扩展性,用户可自定义调试相关模块代码 精心简单的GUI,小巧灵活 完全的可...

  • 2018-07-02

    # XML复习 ## 第一章 ## 思考题 **什么是XML?** XML是可扩展性标记语言,XML是标准通用标记...

  • Python 的可扩展性

    Python 具有高可扩展性,存在许多使用 C 语言或 Fortran 编写扩展的方法。必要时,Python 代码...

  • 论优秀程序员的素养-扩展性、接口能力

    扩展性 什么是扩展性 扩展性,从狭义的角度去说,就是程序设计的灵活性,是程序可插拔、组件可重用设计,核心其实是一个...

  • 【架构】可扩展性

    What 可扩展性指系统为了应对将来需求变化而提供的一种扩展能力,当有新的需求出现时,系统不需要或者仅需要少量修改...

  • 架构入门文章记录

    全文搜索解决方案:Elasticsearch 代码层扩展架构层扩展 设计具备良好可扩展性的系统,有两个思考角度: ...

  • 如何实现可扩展性的大型网站架构

    如何实现可扩展性的大型网站架构 网站的可扩展性架构设计,能够在对现有系统影响最小的情况下,系统功能可以可持续扩展及...

  • 项目管理之软件设计(上)

    做一个"漂亮"的软件设计 什么才是漂亮的软件设计呢?高效、可拓展、灵活性,可拓展,兼容性强,移植性。。。。。。是这...

  • 阿里说:一名百万薪资的java架构师应该具备什么技能?

    所谓架构师,思考的是全局的东西,是如何组织你的系统,以达到业务要求,性能要求,具备可扩展性(scalability...

网友评论

      本文标题:对软件设计可扩展性的思考

      本文链接:https://www.haomeiwen.com/subject/kfvdyqtx.html