0、前言
要具备编写高质量代码的能力,你需要学习一些编程方法论,其 中就包含面向对象(我们可以把它看成一种设计思想)、设计原则、设计模式、编程规范、 重构技巧等。
1、主流的编程方式
1.1、是面向过程
将编程当成是做一件事,要按步骤完成! 比如煮咖啡这件事,先拿一定量的咖啡豆,然后磨成粉末,再倒入咖啡机,等待几分钟,就煮好了咖啡。大概过程是这样的
1.2、 面向对象( 面向对象把可复用单位提升到类层次 )
面向对象就不一样了,将整个任务封装成一个大的类,在这个类里面详细分解执行每个步骤,只需要执行类就可以完成任务
1.3、 函数式编程( 函数是相对比较小的可复用单位 )
面向函数呢,就是将编程分成N件事情,分配每件事情为一个函数,然后要按步骤执行函数完成! 同样是上面的例子,我们可以这样实现
分解整个任务,执行每个单独小任务,该哪个任务执行,就通知对方即可,执行的过程呢,已经提前封装在函数内了
2、 面向对象
握下面这 7 个大的知识点
- 面向对象的四大特性:封装、抽象、继承、多态
- 面向对象编程与面向过程编程的区别和联系
- 面向对象分析、面向对象设计、面向对象编程
- 接口和抽象类的区别以及各自的应用场景
- 基于接口而非实现编程的设计思想
- 多用组合少用继承的设计思想
- 面向过程的贫血模型和面向对象的充血模型
3、 设计原则
设计原则是指导我们代码设计的一些经验总结,有如下7大规则
- SOLID 原则 -SRP 单一职责原则
- SOLID 原则 -OCP 开闭原则
- SOLID 原则 -LSP 里式替换原则
- SOLID 原则 -ISP 接口隔离原则
- SOLID 原则 -DIP 依赖倒置原则
- DRY 原则、KISS 原则、YAGNI 原则、LOD 法则
4、 设计模式
大部分设计模式要解决的都是代码的可扩展性问题
设计模式是针对软件开发中经常遇到的一些设计问题,总结出来的一套解决方案或者设计思路.
5、 编程规范
编程规范主要解决的是代码的可读性问题 , 更加偏重代码细节。即便你可能对设计原则不熟悉、对设计模式不了解,但你最起码要 掌握基本的编码规范,比如,如何给变量、类、函数命名,如何写代码注释,函数不宜过 长、参数不能过多等等
6、 代码重构
在软件开发中,只要软件在不停地迭代,就没有一劳永逸的设计。随着需求的变化,代码的 不停堆砌 原有的设计必定会存在这样那样的问题。针对这些问题,我们就需要进行代码重 构。重构是软件开发中非常重要的一个环节。持续重构是保持代码质量不下降的有效手段, 能有效避免代码腐化到无可救药的地步
6.1重构知识点
重构的目的(why) 重构的 对象(what) 重构的 时机(when) 重构的 方法(how) 保证重构不出错的技术手段:单元测试和代码的可测试性 两种不同规模的重构:大重构(大规模高层次)和小重构(小规模低层次)
7、 五者之间的联系
于面向对象、设计原则、设计模式、编程规范和代码重构
- 面向对象编程因为其具有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂 的设计思路,是很多设计原则、设计模式等编码实现的基础。
- 设计原则是指导我们代码设计的一些经验总结,对于某些场景下,是否应该应用某种设 计模式,具有指导意义
- 设计模式是针对软件开发中经常遇到的一些设计问题,总结出来的一套解决方案或者设 计思路。应用设计模式的主要目的是提高代码的可扩展性
- 编程规范主要解决的是代码的可读性问题
- 重构作为保持代码质量不下降的有效手段,利用的就是面向对象、设计原则、设计模 式、编码规范这些理论
8、课后思考
- 在今天讲到的内容中,你觉得哪一部分内容对提高代码质量最有效?为什么?除了我罗 列的这些内容之外,你还知道哪些可以提高代码质量的方法?
- 我们知道,最经典的设计模式书籍是 GoF 的《设计模式》,它的中文全称是《设计模 式:可复用面向对象软件的基础》,英文全称是“Design Patterns: Elements of Reusable Object-Oriented Software”。为什么它在标题中会特意提到“面向对 象”呢?
9、经典网友回答
9.1 武侠论
面向对象是武器,设计模式是招式,设计原则是心法 以心法为基础,以武器运用招式应对复杂的编程问题
设计原则是高手的内功, 设计模式是少林,武当, 峨眉派的武术套路, 规范是招式 出拳还 是横扫, 重构是组合拳 融汇贯通各种组合, 而想练好这些武功还要有扎实的基本功 面向对 象。
9.2 对比论
函数是相对比较小的可复用单位 面向对象把可复用单位提升到类层次 设计模式把可复用单位提升到框架层次
9.3 总结
提高代码质量的方法论, 包含面向对象(基础), 设计原则(指导方针), 设计模 式(三大类,提高扩展性), 编程规范(提高可读性), 重构(保证代码质量)