设计模式之美
王争
前Google工程师,《数据结构与算法之美》专栏作者
立即订阅
20015 人已学习
课程目录
已更新 46 讲 / 共 100 讲
0/6登录后,你可以任选6讲全文学习。
开篇词 (1讲)
开篇词 | 一对一的设计与编码集训,让你告别没有成长的烂代码!
免费
设计模式学习导读 (3讲)
01 | 为什么说每个程序员都要尽早地学习并掌握设计模式相关知识?
02 | 从哪些维度评判代码质量的好坏?如何具备写出高质量代码的能力?
03 | 面向对象、设计原则、设计模式、编程规范、重构,这五者有何关系?
设计原则与思想:面向对象 (11讲)
04 | 理论一:当谈论面向对象的时候,我们到底在谈论什么?
05 | 理论二:封装、抽象、继承、多态分别可以解决哪些编程问题?
06 | 理论三:面向对象相比面向过程有哪些优势?面向过程真的过时了吗?
07 | 理论四:哪些代码设计看似是面向对象,实际是面向过程的?
08 | 理论五:接口vs抽象类的区别?如何用普通的类模拟抽象类和接口?
09 | 理论六:为什么基于接口而非实现编程?有必要为每个类都定义接口吗?
10 | 理论七:为何说要多用组合少用继承?如何决定该用组合还是继承?
11 | 实战一(上):业务开发常用的基于贫血模型的MVC架构违背OOP吗?
12 | 实战一(下):如何利用基于充血模型的DDD开发一个虚拟钱包系统?
13 | 实战二(上):如何对接口鉴权这样一个功能开发做面向对象分析?
14 | 实战二(下):如何利用面向对象设计和编程开发接口鉴权功能?
设计原则与思想:设计原则 (12讲)
15 | 理论一:对于单一职责原则,如何判定某个类的职责是否够“单一”?
16 | 理论二:如何做到“对扩展开放、修改关闭”?扩展和修改各指什么?
17 | 理论三:里式替换(LSP)跟多态有何区别?哪些代码违背了LSP?
18 | 理论四:接口隔离原则有哪三种应用?原则中的“接口”该如何理解?
19 | 理论五:控制反转、依赖反转、依赖注入,这三者有何区别和联系?
20 | 理论六:我为何说KISS、YAGNI原则看似简单,却经常被用错?
21 | 理论七:重复的代码就一定违背DRY吗?如何提高代码的复用性?
22 | 理论八:如何用迪米特法则(LOD)实现“高内聚、松耦合”?
23 | 实战一(上):针对业务系统的开发,如何做需求分析和设计?
24 | 实战一(下):如何实现一个遵从设计原则的积分兑换系统?
25 | 实战二(上):针对非业务的通用框架开发,如何做需求分析和设计?
26 | 实战二(下):如何实现一个支持各种统计规则的性能计数器?
设计原则与思想:规范与重构 (11讲)
27 | 理论一:什么情况下要重构?到底重构什么?又该如何重构?
28 | 理论二:为了保证重构不出错,有哪些非常能落地的技术手段?
29 | 理论三:什么是代码的可测试性?如何写出可测试性好的代码?
30 | 理论四:如何通过封装、抽象、模块化、中间层等解耦代码?
31 | 理论五:让你最快速地改善代码质量的20条编程规范(上)
32 | 理论五:让你最快速地改善代码质量的20条编程规范(中)
33 | 理论五:让你最快速地改善代码质量的20条编程规范(下)
34 | 实战一(上):通过一段ID生成器代码,学习如何发现代码质量问题
35 | 实战一(下):手把手带你将ID生成器代码从“能用”重构为“好用”
36 | 实战二(上):程序出错该返回啥?NULL、异常、错误码、空对象?
37 | 实战二(下):重构ID生成器项目中各函数的异常处理代码
设计原则与思想:总结课 (3讲)
38 | 总结回顾面向对象、设计原则、编程规范、重构技巧等知识点
39 | 运用学过的设计原则和思想完善之前讲的性能计数器项目(上)
40 | 运用学过的设计原则和思想完善之前讲的性能计数器项目(下)
设计模式与范式:创建型 (2讲)
41 | 单例模式(上):为什么说支持懒加载的双重检测不比饿汉式更优?
42 | 单例模式(中):我为什么不推荐使用单例模式?又有何替代方案?
不定期加餐 (3讲)
加餐一 | 用一篇文章带你了解专栏中用到的所有Java语法
加餐二 | 设计模式、重构、编程规范等相关书籍推荐
春节特别加餐 | 王争:如何学习《设计模式之美》专栏?
免费
设计模式之美
登录|注册

38 | 总结回顾面向对象、设计原则、编程规范、重构技巧等知识点

王争 2020-01-29
到今天为止,设计原则和思想已经全部讲完了,其中包括:面向对象、设计原则、规范与重构三个模块的内容。除此之外,我们还学习了贯穿整个专栏的代码质量评判标准。专栏的进度已经接近一半,马上就要进入设计模式内容的学习了。在此之前,我先带你一块来总结回顾一下,我们已经学过的所有知识点。
今天的内容比较多,有一万多字,但都是之前学过的,算是一个总结回顾,主要是想带你复习一下,温故而知新。如果你看了之后,感觉都有印象,那就说明学得还不错;如果还能在脑子里形成自己的知识架构,闭上眼睛都能回忆上来,那说明你学得很好;如果能有自己的理解,并且在项目开发中,开始思考代码质量问题,开始用已经学过的设计原则和思想来审视代码,那说明你已经掌握这些内容的精髓。

一、代码质量评判标准

如何评价代码质量的高低?
代码质量的评价有很强的主观性,描述代码质量的词汇也有很多,比如可读性、可维护性、灵活、优雅、简洁。这些词汇是从不同的维度去评价代码质量的。它们之间有互相作用,并不是独立的,比如,代码的可读性好、可扩展性好就意味着代码的可维护性好。代码质量高低是一个综合各种因素得到的结论。我们并不能通过单一维度去评价一段代码的好坏。
最常用的评价标准有哪几个?
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《设计模式之美》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(23)

  • 南山
    这篇看起来反而是最轻松的。
    一直有每篇都用xmind做笔记的习惯,自问自答,wwh。
    会结合工作中的代码去思考内容,审视代码,也在code review中和同事结合团队现状制定可行的checklist和编码规范
    受益良多,也更期待后续
    2020-01-29
    12
  • 辣么大
    1. 学完了还是得用:自己业余时间写了一个小项目,然后尝试丰富功能,重构它。目前完成了最基本的功能,代码写的只能算是能用。基本每天都在使用这个小工具。下步打算利用课程中的知识来“盘他”!
    2. 自己个人代码中加入了 FindBugs 和 Google code style。
    3. Leetcode练习时注意逐步优化,想想也算是重构吧,不用ide写代码,注意编码规范。
    4. 一个方法不要超过20行。
    5. 注意代码的可测性,之前没有注意过这方面。重构前要先写测试。
    6. 读完了一本《大话设计模式》,正在看《重构2》。
    期待争哥下部分的课程!
    2020-01-29
    2
  • ちよくん
    打卡,我是理解记忆,老师的原话我肯定记不住,我在老师理解的基础上有自己的理解!
    2020-01-29
    1
  • 李小四
    设计模式_38:
    虽然每篇文章看几遍,但总体来说算是第一遍的学习,这一遍最重要,每一个细节都不放过,后面还需要多次的复习和实践,直到它们变成大脑皮层中物理性的神经回路。

    另外,我个人热爱且敬佩认真做事的人,共勉之!
    2020-02-07
  • L🚲🐱
    打卡,现在是结合自己的理解记忆,好多细节都忘了,看着知识整理,能想起来些细节,最近写了个项目,结合专栏,优化重构
    2020-02-05
  • RLH
    这篇把完整知识总结了一遍,看来自己学的还不够透,很多知识都遗忘了,需要刻意练习~
    2020-02-05
  • Monday
    总结了前面所有的章节,可以座位自己的技能树,谢谢
    2020-02-05
  • rayjun
    太厉害了,能把这么复杂的体系用这么简练的文字表达清楚,值得反复读。
    2020-02-04
  • Jamespxy
    看了总结觉得很有必要复习一遍了,关键还是在于平常编码过程中的实践。
    2020-02-02
  • 志振爱咋滴咋滴
    蓦然回首,发现原来已经学习了那么多的知识了,其实很多东西都是在日常工作中需要不断注意,思考,审视的内容,希望在以后的工作里,能够时刻提醒自己,注意代码质量,提高重构意识
    2020-02-01
  • 守拙
    对于面向对象和设计原则的掌握程度要稍好一些, 对于单测,重构等章节学的不太认真.
    感谢作者精心安排的课程,非常细,有作者自己的理解而不是洗书.
    希望后面的具体设计模式会更精彩!
    2020-01-30
  • Geek_27a248
    感觉差的好多,我感觉我现在还处在理解概念阶段,写代码时不能灵活使用
    2020-01-30
  • webmin
    需要长期练习,有切身体验能记住,没有的还是还给老师了。
    2020-01-30
  • javaadu
    想了几次,抽象并不是面向对象设计独有的特性,而是一个最基本的应对软件复杂性的思路,大型软件如果想活得好,抽象思维一定少不了。

    之前教科书中都说面向对象是三大特性:封装、继承、多态,这里不知道老师是怎么看的
    2020-01-29
  • 刘大明
    今天学习了总结面向对象,设计原则,编码规范和重构相关的知识总结。
    面向对象只是有一些概念更加熟悉了。
    设计原则我觉得自己理解了。
    编码规范和重构是我工作中一直在用的,这次看了专栏之后有了很多新的认识。
    前面的课程要自己抽时间做个思维导图,争哥的导图做的很好,已经下载收藏。
    2020-01-29
  • xavier
    基本是之前每篇的总结,读起来也较轻松,接下来需自己再总结一下。
    2020-01-29
  • Jxin
    1.额。。刚好和这几天对这个专栏整理的xmind差不多。也建议大家自己写下xmind导图,对加深印象和理解很有帮助。串起来和零散的知识点,可记忆性和可理解性差很多。

    2.很好奇怎么讲这些设计模式,期待再次被惊艳。我自己是扒spring对各种设计模式的应用后,才get到在什么场景用什么模式有什么好处这些点的。讲道理,单知道设计模式怎么实现,没太大用。因为没有结合应用就很容易忘记。知道却用不上,才是这块东西真正的难点。
    2020-01-29
  • javaadu
    不同模块的掌握程度不一样:
    1. 设计原则那块有些原则是只是有个印象,有些则是在项目中应用,整体上看这块还需要更多的复习和理解
    2. 重构和编程规范这块在工作中一直持续在做,还不错
    3. 面向对象部分也是有不错的知识结构,并且在工作中的项目里实践

    在这门课程里收获的很多,最近在家宅着,准备再次从第一节课开始复习了🐶
    2020-01-29
  • Yang
    有些具体的设计思想、原则概念性的问题有点含糊不清,不过现在写代码时会考虑代码的可读性、可维护、可扩展性等。真的很感谢老师出了这门课,之前每次写代码都纠结代码质量怎么保证,老师的这门课解答了我之前所有关于代码质量的疑问。
    2020-01-29
  • 六号先生117
    老师真好,昨天正好开始复习,自己画思维导图,看到文中总结结构图真棒👍🏻
    2020-01-29
收起评论
23
返回
顶部