Python模式设计——反模式

反模式

    • 反模式简介
    • 软件开发反模式
      • 意大利面条式代码
      • 金锤
      • 熔岩流
      • 赋值粘贴或剪切粘贴式编程
    • 软件架构反模式
      • 重新发明轮子
      • 供应商套牢
      • 委员会设计

反模式简介

不良的设计主要表现:

  • 不动行:那以重用
  • 刚性:任何小的的修改都会导致软件的大多部分必须进行相应的改动
  • 脆弱性:任何的更改都会导致现有系统变得非常容易崩溃。
  • 粘滞性:架构层面的修改非常困难

反模式可能是由以下原因所致的:

  • 开发人员不了解软件实践
  • 开发人员没有将设计模式应用到正确的上下文中。

目标

  • 识别软件行业经常出现的问题,并未其中的大多数问题提供详细的补救措施。
  • 开发相应的工作来识别这些问题,并确定其根本原因
  • 描述可用于应用程序和架构层次上的改进措施

分类

  • 软件开发反模式
  • 软件架构反模式

软件开发反模式

在进行软件开发时,往往会偏离最初的代码结构:原因

  • 开发人员的想法会随着开发过程的推进而发生变化。
  • 用例通常会随着客户的反馈而进行更改
  • 最初设计的软件结构可能会随着功能或可伸缩性等方面的考虑而发生变化

意大利面条式代码

如果以特殊的方式开发结构,软件控制流也会变得错综复杂。意大利面式代码非常难以维护和优化的。

  • 对面向对象编程和分析的无知
  • 没有考虑产品的架构或设计
  • 快餐式思维

面临的问题

  • 结构的重用性将会降低到最低
  • 维护工作量过高
  • 进行修改时,扩展性和灵活性会减低

金锤

意思是一把锤子搞定所有的钉子,原因:

  • 来自不了解具体问题的高层的建议
  • 软件应被这种技术绑架了

金锤的影响:

  • 痴迷于一个解决方案,并把它应用于所有软件项目
  • 不是通过功能,而是通过开发中使用的技术来描述产品
  • 没有满足需求,造成与用于的预期不符

熔岩流

这个反模式与软件应用程序中的死代码或一段用不到的代码有关,并且,人们害怕一段对其进行修改,就会破坏其他东西。

  • 产品中有大量的试错代码
  • 一个人单独编写的代码
  • 软件架构或设计的初始思想是通过代码库来实现。

症状:

  • 测试工作具有很低的代码覆盖率
  • 代码中含有莫名奇妙的注释
  • 过时的结构、或开发人员需要围绕既有展开工作

赋值粘贴或剪切粘贴式编程

原因:

  • 新手开发者不习惯编写代码或不知道如何开发代码
  • 快速修复bug
  • 代码重复,无法满足跨模块标准化以及代码结构化的要求
  • 缺乏长远打算或深谋远虑

后果

  • 多个软件应用程序存在同种类型的问题
  • 维护成本会更高,同时bug的声明周期也会变得更长
  • 较少的模块化代码库,相同的代码会散落于多处。
  • 继承问题

软件架构反模式

重新发明轮子

原因:

  • 缺乏中央文档或存储库来讲解架构及问题和存放已实现的解决方案
  • 区或公司内的技术领袖之间缺乏沟通
  • 组织中遵循的流程是从头开始构建的,通常情况下,这样的流程是不成熟的,并且流程的实现通常是不严谨的,并且难以坚持。

后果

  • 解决一个标准问题的解决方案过多,其中很多解决方案考虑并不完全。
  • 上市时间延后
  • 封闭的系统架构

供应商套牢

委员会设计

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览211385 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年7月21日
下一篇 2019年7月22日

相关推荐