设计模式之美
王争
前 Google 工程师,《数据结构与算法之美》专栏作者
123425 人已学习
新⼈⾸单¥98
登录后,你可以任选6讲全文学习
课程目录
已完结/共 113 讲
设计模式与范式:行为型 (18讲)
设计模式之美
15
15
1.0x
00:00/00:00
登录|注册

03 | 面向对象、设计原则、设计模式、编程规范、重构,这五者有何关系?

中介模式
解释器模式
命令模式
备忘录模式
访问者模式
状态模式
迭代器模式
职责链模式
策略模式
模板模式
观察者模式
享元模式
组合模式
门面模式
适配器模式
装饰者模式
桥接模式
代理模式
原型模式
建造者模式
工厂模式
单例模式
DIP依赖倒置原则
ISP接口隔离原则
LSP里式替换原则
OCP开闭原则
SRP单一职责原则
大重构和小重构
保证重构不出错的技术手段
重构的目的、对象、时机、方法
函数长度、参数数量规范
代码注释规范
变量、类、函数命名规范
行为型
结构型
创建型
LOD法则
YAGNI原则
KISS原则
DRY原则
SOLID原则
面向过程的贫血模型和面向对象的充血模型
多用组合少用继承的设计思想
基于接口而非实现编程的设计思想
接口和抽象类的区别及应用场景
面向对象分析、设计、编程
面向对象编程与面向过程编程的区别和联系
面向对象的四大特性
面向过程、面向对象、函数式编程
代码重构
编程规范
设计模式
设计原则
面向对象
面向对象、设计原则、设计模式、编程规范、重构

该思维导图由 AI 生成,仅供参考

在上一节课中,我们讲到,要具备编写高质量代码的能力,你需要学习一些编程方法论,其中就包含面向对象(我们可以把它看成一种设计思想)、设计原则、设计模式、编程规范、重构技巧等。而我们整个专栏的内容也是围绕着这几块展开讲解的。所以,今天我就先来简单介绍一下这几个概念,并且说一说它们之间的联系。
今天的内容相当于专栏的一个教学大纲,或者说学习框架。它能让你对整个专栏所涉及的知识点,有一个全局性的了解,能帮你将后面零散的知识更系统地组织在大脑里。
话不多说,我们就一块来看一下,接下来的这 8 个月我们到底要学习哪些内容吧!

面向对象

现在,主流的编程范式或者是编程风格有三种,它们分别是面向过程、面向对象和函数式编程。面向对象这种编程风格又是这其中最主流的。现在比较流行的编程语言大部分都是面向对象编程语言。大部分项目也都是基于面向对象编程风格开发的。面向对象编程因为其具有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式编码实现的基础。
所以,在专栏的最开始,我们会详细地讲解面向对象编程的相关的知识,为学习后面的内容做铺垫。对于这部分内容,你需要掌握下面这 7 个大的知识点。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了面向对象编程、设计原则、设计模式、编程规范和代码重构之间的关系。首先介绍了面向对象编程的基本概念和特性,然后详细讲解了设计原则,包括SOLID原则、DRY原则、KISS原则、YAGNI原则和LOD法则。接着,文章介绍了设计模式的分类和应用场景,包括创建型、结构型和行为型设计模式。编程规范部分主要解决代码的可读性问题,包括变量、类、函数命名规范等。最后,文章强调了代码重构的重要性,介绍了重构的目的、对象、时机和方法,以及保证重构不出错的技术手段。整体而言,本文以系统性的方式介绍了编写高质量代码所需的基本概念和技能,对于想要提高编程能力的读者具有很高的参考价值。文章深入浅出地阐述了面向对象编程、设计原则、设计模式、编程规范和代码重构之间的联系,为读者提供了全面的技术视角和实用指导。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《设计模式之美》
新⼈⾸单¥98
立即购买
登录 后留言

全部留言(365)

  • 最新
  • 精选
  • 陈拾柒
    再好的理论,应用不到实际中也是白费。所以对于提升代码质量,最有效的是编码规范,其次是设计原则,再次是代码重构,最后才是面向对象和设计模式。 整个排序是按照我理解的难易程度来进行的。一般一个项目都是多人开发,多人并行开发中,考虑到团队中技术水平不一,保持代码质量最好的方式就是先制定编码规范,大家最容易达成一致并遵守。其次是设计原则,因为它相对来讲更明确,违反设计原则基本等于硬伤,更容易得到认同。代码重构是需要长期去做的,甚至不是在开发过程中而是在维护过程中去做的,所以排在第三位。后面两项更多的要考虑实际情况,不同水平的人甚至相同水平的人都会有自己不同的理解,比较难以达成统一,项目排期足够还好,一旦排期不足,很可能在当时没那个成本去谈论这些。 第二个问题老师已经回答了,因为面向对象的特性是其他的基石。 建议老师在后续课程中,除了讨论如何提升自己的代码质量,也讨论一下在一个多人团队中如何提升团队的代码质量,有哪些比较好的手段可以去应用。包括在项目排期比较紧的时候,可以有哪些方式去保证代码质量。

    作者回复: 嗯嗯,加餐里有讲到的。

    2019-11-15
    6
    72
  • Yayu
    面向对象的特征也未必包含“继承”这一点吧,比如 Go 语言就没有提供“继承”这个特性,取而代之的是,推荐使用“组合”。但不能说它不支持面向对象编程。那么我们在探讨“面向对象”这个范式时,需要更深刻的去思考“面向对象”的本质是什么。而不是用Java 中的概念来一以概之。希望王争老师参考。

    作者回复: 后面会讲到,等讲到了就明白了

    2019-11-05
    10
    18
  • zachary
    争哥,设计模式有三种类型: 创建型:这个好理解,就是用来创建对象的一些模式 结构型和行为型不好理解,结构体现在哪里?行为又体现在哪里?能否说的更具体点?

    作者回复: 后面会讲到的,别急哈

    2019-11-06
    2
    7
  • Miaozhe
    我看到设计原则中还有迪米特法则(Law of Demeter, LoD),这个也是解决God类的一种方式。另外这个法则,好像跟组合复用相背呢。帮忙解释一下。

    作者回复: 学了后面章节就明白了

    2019-11-08
    4
  • 胖大海
    对于重构,我有话(槽)要说(吐):我是做企业项目外包的,我们给客户交付的项目大多在客户方面庞杂缺少弹性的IT合规性要求和业务快速变动的现实的双重夹击下痛苦地演进着。重构意味着不改变系统已有功能的情况下优化项目代码,但面临着合规性和流程的限制导致这类无业务功能更新的发布不会被甲方IT放行;另一方面不断的新需求的变更又不断地劣化着已有代码的系统架构以及业务代码的设计。不知道有没有面临同样问题的同学,在无法改变现有大环境的前提下进行有限的优化?我们现在能做的也就是在每一次追加的新需求变更时进行小幅度的改善,但这无法受到任何工作流程的保护和管理,仅能靠程序员个人的良心来做。另外,如何保证重构不会因为代码结构的变化引入新的bug呢?单元测试以及覆盖率较高的自动化测试吗?

    作者回复: 单元测试是一个非常有效的手段,后面的章节中会讲到。

    2019-11-05
    2
    4
  • 初学者
    一直跟着pojo,controller,service转写不出好的代码

    作者回复: 是的

    2020-11-23
    3
  • Geek_222ec6
    设计原则是指导设计模式的更抽象的理论(这么说应该对吧) 另外有个困惑就是在编码规范的时候,自我感觉英语还可以,但是函数,变量命名的时候经常会犯纠结症和强迫症。。。不知道怎么命名才好。

    作者回复: 理解是对的。这个正常,一个好的命名确实要花点时间想的

    2019-11-09
    2
    3
  • 奇小易
    我觉得编程规范是最有效的一种方法,选择它就表示认可了可读性是代码质量最核心的一点。因为它不仅好学、好上手,用起来效果还明显。不像其它的方法对个人经验的依赖性强。还有个例子证明它的重要性,听说Google入职前几个月最先做的事情是把他们的编程规范熟记于心。

    作者回复: 有code readability认证,需要每个人通过

    2019-11-27
    2
  • 大豆腐
    面向对象的特性,有些地方说是4个,有些地方说是3个,一脸懵逼

    作者回复: 我后面的文章会讲到的 别急

    2019-11-05
    2
  • 划时代
    老师我有疑问,在没有充分必要的情况下是不是不采用面向对象编程(继承+多态),大多数情况下使用基于对象的方式进行编程(封装+组合)?

    作者回复: 哈哈 感觉你说的继承、多态、封装、组合可以任意组合起来用啊。并没有说面向对象就是继承+多态,基于对象就是封装+组合呀

    2019-11-05
    2
    1
收起评论
显示
设置
留言
99+
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部