文章目录

  • 设计模式之美 精华总结 笔记(一)
    • 一、为什么学习设计模式
    • 二、如何评判代码质量的高低
    • 三、如何实现高质量代码的编写
    • 四、面向对象、设计原则、设计模式、编程规范、重构 五者关系、
    • 五、总结
    • 六、附上总结图

设计模式之美 精华总结 笔记(一)

一、为什么学习设计模式

1、避免写烂代码

2、提高复杂代码的设计和开发能力

3、读源码、学框架事半功倍

二、如何评判代码质量的高低

常见的形容词:

灵活性(flexibility)、可扩展性(extensibility)、可维护性(maintainability)、可 读性(readability)、可理解性(understandability)、易修改性(changeability)、 可复用(reusability)、可测试性(testability)、模块化(modularity)、高内聚低耦 合(high cohesion loose coupling)、高效(high effciency)、高性能(high performance)、安全性(security)、兼容性(compatibility)、易用性 (usability)、整洁(clean)、清晰(clarity)、简单(simple)、直接 (straightforward)、少即是多(less code is more)、文档详尽(well- documented)、分层清晰(well-layered)、正确性(correctness、bug free)、健 壮性(robustness)、鲁棒性(robustness)、可用性(reliability)、可伸缩性 (scalability)、稳定性(stability)、优雅(elegant)、好(good)、坏(bad) ……

几个最常用,最重要的标准:

可维护性、可读性、可扩展性、灵活性、简洁性(简单、复杂)、可复用性、可测试性。

1、易维护性 (maintainability)

代码易维护”就是指,在不破坏原有代码设计、不引入新的 bug 的情况 下,能够快速地修改或者添加代码。所谓“代码不易维护”就是指,修改或者添加代码需要 冒着极大的引入新 bug 的风险,并且需要花费很长的时间才能完成。

2、可读性 (readability)

如何评价一段代码的可读性:

代码是否符合编码规范、命名是否达意、注释是否详尽、函数是否长短合适、模块划分是否清晰、是否符合高内聚低耦合等等

3、可扩展性 (extensiblity)

在不修改或少量修改原有代码的情况下,通过扩展的方式添加新的功能代码

一项重要的设计原则:对修改关闭,对扩展开放

4、灵活性 (flexibility)

5、简洁性 (simplicity)

KISS 原则:“Keep It Simple, Stupid”。这个原则说的意思就是,尽量保持代码简单。代码简单、逻辑清晰,也就意味 着易读、易维护。我们在编写代码的时候,往往也会把简单、清晰放到首位。

不过,很多编程经验不足的程序员会觉得,简单的代码没有技术含量,喜欢在项目中引入一 些复杂的设计模式,觉得这样才能体现自己的技术水平。实际上,思从深而行从简,真正的 高手能云淡风轻地用最简单的方法解决最复杂的问题。这也是一个编程老手跟编程新手的本 质区别之一。

6、可复用性(reusability)

尽量减少重复代码的编写,复用已有的代码。

继承、多态存在的目的之一,就是为了提高代码的可复用性

一项重要的设计原则:单一职责原则

7、可测试性(testability)

(评论区有个朋友说的TDD - Test Driven Development)

三、如何实现高质量代码的编写

掌握更加细化的编程思想以及更能落地的编程方法论。

包含面向对象的设计思想、设计原则、设计模式、编码规范、重构技巧

四、面向对象、设计原则、设计模式、编程规范、重构 五者关系、

前情提要:

 面向对象的四大特性:封装、抽象、继承、多态面向对象编程与面向过程编程的区别和联系面向对象分析、面向对象设计、面向对象编程接口和抽象类的区别以及各自的应用场景基于接口而非实现编程的设计思想多用组合少用继承的设计思想面向过程的贫血模型和面向对象的充血模型

1、设计原则

SOLID 原则 -SRP 单一职责原则

SOLID 原则 -OCP 开闭原则

SOLID 原则 -LSP 里式替换原则

SOLID 原则 -ISP 接口隔离原则

SOLID 原则 -DIP 依赖倒置原则

DRY 原则(don’t repeat yourself)、KISS 原则(keep it simple and stupid)、YAGNI 原则(you Ian’t gonna need it)、LOD 法则(law of demeter)

2、设计模式(经典23种)

三种:创建型、结构型、行为型

  • 创建型:

常用的有: 单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式。

不常用的有: 原型模式。

  • 结构型:

常用的有: 代理模式、桥接模式、装饰者模式、适配器模式。

不常用的有: 门面模式、组合模式、享元模式。

  • 行为型:

常用的有: 观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式。

不常用的有: 访问者模式、备忘录模式、命令模式、解释器模式、中介模式。

3、编码规范

4、代码重构

重构的目的(why)、对象(what)、时机(when)、方法(how);

保证重构不出错的技术手段:单元测试和代码的可测试性;

两种不同规模的重构:大重构(大规模高层次)和小重构(小规模低层次)。

五、总结

  • 面向对象编程因为其具有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式等编码实现的基础。

  • 设计原则是指导我们代码设计的一些经验总结,对于某些场景下,是否应该应用某种设计模式,具有指导意义。比如,“开闭原则”是很多设计模式(策略、模板等)的指导原则。

  • 设计模式是针对软件开发中经常遇到的一些设计问题,总结出来的一套解决方案或者设计思路。应用设计模式的主要目的是提高代码的可扩展性。从抽象程度上来讲,设计原 则比设计模式更抽象。设计模式更加具体、更加可执行。

  • 编程规范主要解决的是代码的可读性问题。编码规范相对于设计原则、设计模式,更加具体、更加偏重代码细节、更加能落地。持续的小重构依赖的理论基础主要就是编程规范。

  • 重构作为保持代码质量不下降的有效手段,利用的就是面向对象、设计原则、设计模式、编码规范这些理论。

六、附上总结图

设计模式之美 精华总结 笔记(一)相关推荐

  1. 设计模式之美 精华总结 笔记(二)

    文章目录 设计模式之美 精华总结 笔记(二) 一.面向对象精解 1.封装 2.抽象 3.继承 4.多态 5.思考:为什么有些语言不允许多继承 二.面向对象优于面向过程的地方 1.形式上 2.复用.扩展 ...

  2. 《设计模式之美》学习笔记(一)

    01.当谈论面向对象的时候,我们到底在谈论什么? 面向对象编程的英文缩写是 OOP,全称是 Object Oriented Programming 面向对象编程都是通过使用面向对象编程语言来进行的,但 ...

  3. 《设计模式之美》学习笔记(二)

    第二章主题是设计原则 1.对于单一职责原则,如何判定某个类的职责是否够"单一"? SOLID 原则并非单纯的 1 个原则,而是由 5 个设计原则组成的,它们分别是:单一职责原则.开 ...

  4. 设计模式之美读书笔记

    目录 设计模式之美 读书笔记5- 哪些代码看似面向对象,实际是面向过程编程? 读书笔记4- 封装.抽象.继承.多态分别解决了什么编程问题? 读书笔记3- 我们在讨论面向对象的时候,主要说的是什么? 读 ...

  5. 本人亲自整理的极客时间设计模式之美下部的硬核笔记(残缺版)最近加班太多,搞不了太多,只能尽量了xd们

    设计模式之美(下)https://www.yuque.com/zcming123/uygxde/cbwnad 这位猿,三连,再走吧! 以下内容是为了让搜索引擎,检测到这篇文章.要阅读体验,请点击上面的 ...

  6. 设计模式之美笔记11

    记录学习王争的设计模式之美 课程 笔记和练习代码,以便回顾复习,共同进步 文章目录 门面模式 门面模式的原理和实现 门面模式的应用场景举例 1. 解决易用性问题 2. 解决性能问题 3. 解决分布式事 ...

  7. 《设计模式之美》笔记---行为型设计模式

    文章目录 观察者模式 模板模式 模板模式与回调 策略模式 定义 创建 使用 如何避免掉冗长的if-else|switch分支判断代码? 职责链模式 定义 实现 第一种 第二种(其实就是使用数组实现而已 ...

  8. 极客时间-设计模式之美 王争 听课笔记

    文章目录 极客时间-设计模式之美 王争 01 每个程序员都要尽早学习并掌握设计模式相关知识 02 哪些维度评判代码质量? 03 面向对象.设计原则.设计模式.编程规范.重构,这五者有何关系? 04 当 ...

  9. 代码技巧--设计模式之美

    设计模式之美 零.文章目录 一.概述 1.学习导读 本文是极客时间专栏<设计模式之美>的学习笔记,详情请看原文. 学习算法 :是为了写出 高效 的代码: 学习设计模式 :是为了写出 高质量 ...

  10. 设计模式之美:Memento(备忘录)

    索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Memento 模式结构样式代码. 别名 Token 意图 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这 ...

最新文章

  1. 并查集 HDOJ 5441 Travel
  2. jsp mysql 注入攻击实例
  3. SQL2005的安装
  4. 程序员过关斩将--为微服务撸一个简约而不简单的配置中心
  5. 网站集搜索中心的搜索页面对应路径:
  6. unix oracle数据库启用,UNIX下ORACLE数据库的创建
  7. 洛谷 P4114 Qtree1 树链剖分
  8. 用MediaCreationTool做纯净版Windows 10系统U盘
  9. 戴尔服务器系统备份还原工具,DELL备份恢复系统的小工具 Dell DataSafe Local Backup[网络技术]...
  10. 【UCSC Genome Browser】Genes and Gene Predictions - GENCODE
  11. 区块链开发主流编程语言居然是Go语言
  12. 变转速数据集 -- 渥太华轴承数据集描述及下载链接
  13. Flutter基础Widget之按钮(RaisedButton、FlatButton、OutlineButton,IconButton)
  14. Two Shuffled Sequences
  15. zblog访问记录v2.5.0
  16. 【游戏编程扯淡精粹】如何学习编程语言
  17. Python 增强视频画质,就这么做!
  18. 国产化Kettle、JDK、MySQL下载安装操作步骤
  19. python pdf删除图片_使用PyMuPdf提取、删除及替换PDF中的图片文件
  20. 情感分析:几乎包括你需要知道的所有(一)

热门文章

  1. (一)生成器详解——简单生成器
  2. 基于色彩调和的专题图自动生成系统
  3. 如何升级 Win10 系统
  4. 【深度学习】Yolo记录
  5. VRRP:虚拟网关冗余技术
  6. 计算机链接投影仪后不显示桌面,win10系统连接投影后不显示桌面图标怎么办
  7. 访问win7默认共享
  8. mysql distinct count_MySQL中distinct和count(*)的使用方法比较
  9. 【看论文】之《基于YIQ彩色模型的成熟番茄图像分割识别_王新忠》
  10. socket+threading实现python多人局域网聊天室