美文网首页
编程中的过度设计

编程中的过度设计

作者: 全新的饭 | 来源:发表于2020-09-27 07:53 被阅读0次

是什么?

进行了过多的面向未来的设计:进行了不必要的抽象封装,为系统增加了不必要的复杂度。

问题分析

程序设计的一切应以需求为准。
过度设计不是实现了太多功能,而是为了实现太多自己觉得以后会出现但是结果没出现的需求,导致系统架构过于庞大复杂。
本质:想太多,妄想自己的程序能应对更多(甚至一切)需求的变化。

怎么解决这个问题

在做设计时

提醒自己:设计是为了满足需求,别为了设计而设计
不要指望设计出所有细节,边写边重构

测试驱动开发

小步增量,不断重构。分2步。

  1. 用测试用例描绘需求,用最简单的方式满足测试用例。
  2. 重构。让现有代码在尽量保持简单的同时足够优雅清晰。不许引入任何新功能。

排斥任何对未来的设计,用优雅简洁的设计为未来的重构降低成本。

相关思考

对于规模大的项目来说,因为人多人杂,如果不尽可能预先设计会容易造成返工浪费资源,设计的适度依赖于架构师的经验和需求的稳定性,想完全避免过度设计是几乎不可能的。可以前期控制参与人员的数量,在小范围内实现核心功能(精益),通过重构改良设计,再增加人员全面开发。

对于只有一两个开发者的小项目来说,导出好设计的唯一手段就是重构,妄图不经反复修改而一次性解决问题最终会发现都是在自找麻烦。

应对需求变动的常用方式

  1. 代码不重复(单点改动)
  2. 高聚合(细分功能代码,提倡小对象、短方法),低耦合(隔离变动)
  3. 代码易读,符合思维习惯

需权衡:灵活、易读、效率

  • 灵活:精细的功能分解和更抽象的概念,以方便复用
    功能细分会影响局部开发效率(更多的代码量)和整体运行效率(调用和传参增多)
    概念抽象会增加阅读负担

砍掉工作量大且不易理解的灵活性设计,保留工作量小且不需引入新概念的灵活性设计。
发现重复代码时,立刻通过重构改为单点。
写新代码的过程中尽可能把旧代码中的“臭味”重构掉。

相关文章

  • 编程中的过度设计

    是什么? 进行了过多的面向未来的设计:进行了不必要的抽象封装,为系统增加了不必要的复杂度。 问题分析 程序设计的一...

  • 中小学生写编程意见

    编程教育就是希望青少年不要过度沉迷网络游戏,所以让孩子们了解游戏程序设计的原理。除了游戏,编程教育还包括了语文、数...

  • 7种最重要的软件设计模式

    为什么要设计模式? 设计模式已成为最近在编程界引起争议的对象,这在很大程度上是由于设计模式被认为是“过度使用”而导...

  • 过度设计

    先来讲个小故事。 春秋时期,《论语.先进》中有这样一段对话:“子贡问:‘师与商也孰贤?’子曰:‘师也过,商也不及。...

  • 过度设计

    从事设计行业许多年, 关于设计我有一些反思。 过度设计是我们这个时代所面临的大问题, 很多时候我们不是不需要设计,...

  • 11.JavaScript的面向对象1-属性描述符

    JavaScript其实支持多种编程范式的,包括函数式编程和面向对象编程: JavaScript中的对象被设计成一...

  • 产品设计——从虾米音乐浅析“产品的过度设计”

    “过度设计”指的是在设计中出现了与主体信息传达无关的设计。过度设计不仅让设计变得臃肿,而且因为主题无关信息的存在,...

  • 史上最全 Python 面向对象编程

    面向对象编程和函数式编程(面向过程编程)都是程序设计的方法,不过稍有区别。 面向过程编程: 在多函数程序中,许多重...

  • 面向指针编程(一)

    面向对象编程,面向设计模式编程(亦即设计模式),面向接口编程,面向模板编程(亦即泛型编程),面向函数编程(亦即函数...

  • 面向对象六大设计原则

    根据大量程序员和编程大师的实践,总结出了面向对象编程的六大设计原则。设计原则是面向对象编程过程中需要遵守的一些规则...

网友评论

      本文标题:编程中的过度设计

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