设计模式

作者: Zeppelin421 | 来源:发表于2022-04-15 09:37 被阅读0次

为什么学设计模式

如何分层、分模块?应该怎么划分类?每个类应该具有哪些属性、方法?怎么设计类之间的交互?该用继承还是组合?该使用接口还是抽象类?怎样做到解耦、高内聚低耦合?该用单例模式还是静态方法?用工厂模式创建对象还是直接 new 出来?如何避免引入设计模式提高扩展性的同时带来的降低可读性问题?

\color{#fbbc05}{设计模式}\color{black}{就是教你写出高质量的代码}
告别写被人吐槽的烂代码;提高复杂代码的设计和开发能力;让读源码、学框架事半功倍;为你的职场发展做铺垫

代码质量

什么是高质量代码

代码质量的评价有很强的的主观性,描述代码质量的词汇也有很多,常用的几个评判代码质量的标准有:

  • 可维护性(maintainability)
    在不破坏原有代码设计、不引入新的BUG的情况下,能够快速地修改或者添加代码。可维护性也是一个很难量化、偏向对代码整体的评价标准。如果代码分层清晰、模块化好、高内聚低耦合、遵从基于接口而非实现编程的设计原则等,那就意味着代码易维护。代码易维护还跟项目代码量、业务复杂度、技术复杂度、文档是否齐全、团队成员能力水平等诸多因素相关。
  • 可读性(readability)
    “Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”
    代码是否符合编码规范、命名是否达意、注释是否详尽、函数是否长短合适、模块划分是否清晰、是否符合高内聚低耦合
  • 可扩展性(extensible)
    在不修改或少量修改原有代码的情况下,通过扩展的方式添加新的功能代码。简单说就是,代码预留了一些功能扩展点,你可以把新功能代码直接插到扩展点上,而不需要因为要添加一个功能而大动干戈,改动大量的原始代码
  • 灵活性(flexibility)
    一段代码易扩展、易复用或者易用都可称为比较灵活
  • 简洁性(simplicity)
    KISS原则:“Keep It Simple,Stupid”。尽量保持代码简单、逻辑清晰
    思从深而行从简,真正的高手能云淡风轻地用最简单的方法解决最复杂的问题
  • 可复用性(reusable)
    尽量减少重复代码的编写,复用已有的代码
  • 可测试性(testability)
    代码可测试性好坏,能从侧面非常准确地反应代码质量的好坏。代码的可测试性差,比较难写单元测试,那基本上就能说明代码设计得有问题

如何写出高质量代码

要写出高质量代码,我们就需要掌握一些更加细化、更加能落地的编程方法论,这就包括:面向设计思想、设计原则、设计模式、编程规范、重构技巧等等。

  • 面向对象
    主流编程范式或者编程风格有三种:面向过程、面向对象和函数式编程。面向对象编程因为其具有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式等编码实现的基础。
  • 设计原则
    设计原则是指导我们代码设计的一些经验总结,对于某些场景下,是否应该应用某种设计模式,具有指导意义。比如:“开闭原则”是很多设计模式(策略、模板等)的指导原则。设计原则有个非常大的特点,那就是这些原则听起来都比较抽象,定义描述都比较模糊,不同的人会有不同的解读。
  • 设计模式
    设计模式是针对软件开发中经常遇到的一些设计问题,总结出来的一套解决方案或设计思路。应用设计模式的主要目的是提高代码的可扩展性。从抽象程度上来讲,设计原则比设计模式更抽象。设计模式更加具体、更加可执行。
  • 编程规范
    编程规范主要解决的是代码的可读性问题。编程规范相对于设计原则、设计模式,更加具体、更加偏重代码细节、更加能落地。比如:如何给变量、类、函数命名,如何写代码注释,函数不宜过长、参数不能过多等。持续的小重构依赖的理论基础主要就是编程规范。
  • 代码重构
    只要软件不停地迭代,就没有一劳永逸的设计。随着需求的变化,代码不停堆砌,原有的设计必定会存在这样那样的问题。针对这些问题,需要进行代码重构。重构是软件开发中非常重要的一个环节。持续重构是保持代码质量不下降的有效手段,能有效避免代码腐化到无可救药的地步。它利用的就是面向对象、设计原则、设计模式、编程规范这些理论。

相关文章

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

  • 设计模式笔记汇总

    目录 设计原则 “依赖倒置”原则 未完待续... 设计模式 设计模式——策略模式 设计模式——装饰者模式 设计模式...

  • 设计模式

    《C#设计模式》 《C#设计模式》-设计模式概述 《C#设计模式》-面向对象设计原则 《C#设计模式》-单例模式 ...

  • 浅谈JS的一些设计模式

    @(书籍阅读)[JavaScript, 设计模式] 常见设计模式 设计模式简介 设计模式概念解读 设计模式的发展与...

  • 前端设计模式

    JS设计模式一:工厂模式jS设计模式二:单例模式JS设计模式三:模块模式JS设计模式四:代理模式JS设计模式五:职...

  • 设计模式之工厂模式

    设计模式之工厂模式 标签(空格分隔): 设计模式 工厂模式 设计模式的感念 设计模式的应用 工厂设计模式的产生 工...

  • JavaJavascript基础进阶(十七)JS中常用的设计模式

    单利设计模式、构造原型设计模式、发布订阅设计模式、promise设计模式 单利模式 构造原型设计模式 最贴近OOP...

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

  • 第1章 设计模式概述

    一、设计模式的概念 二、设计模式的历史 三、设计模式的要素 四、设计模式的分类 ■ 创建型设计模式 ■ 结构型设计...

  • iOS设计模式(3)适配器模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(4)抽象工...

网友评论

    本文标题:设计模式

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