一、面向对象
现在主流的编程范式有三种:面向过程、面向对象和函数式编程,而面向对象又是其中最主流的。
面向对象因其具有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式编码实现的基础。
面向对象的四大特性:封装、抽象、继承、多态
面向对象编程与面向过程编程的区别和联系
面向对象分析、面向对象设计、面向对象编程
接口和抽象类的区别及各自的应用场景
基于接口而非实现
多用组合而非继承
面向过程的贫血模型和面向对象的充血模型
二、设计原则
设计原则是指导我们代码设计的一些经验总结,对于在某些场景下,是否应该应用某种设计模式具有指导意义。如“开闭原则”是很多设计模式(策略、模板等)的指导原则。
对于每一种设计原则,我们需要掌握它的设计初衷,能解决哪些编程问题,有哪些应用场景,进而才能在项目中灵活恰当的应用这些原则。
SOLID原则:SRP单一职责、OCP开闭、LSP里氏替换、ISP接口隔离了、DIP依赖倒置
DRY、KISS、YAGNI、LOD
三、设计模式
应用设计模式的主要目的是提升代码的可扩展性。从抽象程度上来讲,设计原则比设计模式更抽象,设计模式更加具体,更加可执行。
设计模式是针对软件开发中经常遇到的一些设计问题,总结出来的一套解决方案或者设计思路。学习难点是了解它们都能解决哪些问题,掌握典型的应用场景,并且懂得不过度应用。
1、创建型
常用:单例、工厂(工厂方法、抽象工厂)、建造者
不常用:原型
2、结构型
常用:代理、桥接、装饰器、适配器
不常用:门面、组合、享元
3、行为型
常用:观察者、模板、策略、责任链、职责链、迭代器、状态
不常用:访问者、备忘录、命令、解释器、中介
四、编程规范
编程规范主要解决的是代码的可读性问题。编码规范相对于设计原则、设计模式,更加具体、更加偏重代码细节、更加能落地。持续的小重构依赖的理论基础主要就是编程规范。
编程规范每条编码规范都非常简单、明确、偏向于记忆,不像设计原则,需要融入很多个人的理解和思考。如如何给变量、类、函数命名、如何写注释、函数不宜过长、参数不能过多等等。
五、代码重构
在软件开发中,只要软件在不停的迭代,就没有一劳永逸的设计,重构是软件开发中非常重要的一环。
重构是保持代码质量不下降的有效手段,而重构的工具就是面向对象设计思想、设计原则、设计模式、编码规范这些理论。
在开发初期,除非特别必须,我们一定不要过度设计应用复杂的设计模式。而是当代码出现问题的时候,我们再针对问题,应用原则和模式进行重构,这样就能有效避免前期的过度设计。
- 重构的目的(why)、对象(what)、时机(when)、方法(how)
- 保证重构不出错的技术手段:代码的可测试性、单元测试
- 两种规模的重构:大重构、小重构