我们来看一些整个专栏的知识体系,整个专栏围绕着编写高质量代码开始,从面向对象,设计原则,质量代码编写.涵盖了代码设计的方方面面,对面向对象,设计原则,编码规范,重构技巧,设计模式这五个方面,我们今天就再串一次

图片

面向对象

相对于面向过程,函数式编程,面向对象编程是现在主要的编程范式

对于面向过程,老一套了

对于函数式编程,因为应用场景比较单一,大多作为面向对象编程的一种补充

其,提供了丰富的特性,比如封装,抽象,继承,多态,有助于实现复杂的设计思路

在面向对象这一部分,重点掌握面向对象的四大特性,封装 抽象 继承 多态,而且要避免写出面向过程风格的代码

除此外,还有着面向对象分析 OOA, 设计 OOD, 编程 OOP,其中,面向对象分析就是需求分析

面向对象设计师代码层面的设计,输出的设计结果是类,面向对象编程就是讲设计的结果编译成代码的过程

我们将面向对象设计分为四个环节,划分职责并识别出类,定义类的属性和方法,定义类的交互关系,组装类并提供入口.并通过如此,可以做到面对开发需求的时候,不至于无从下手,做到有章可循

在面向对象的部分,我们说了两个设计思想,基于接口而非实现编程

多用组合而非继承的思想,这个思想并不复杂,但是要贯彻整个编程之中

设计原则

我们说了整体的设计原则,而且设计原则有助于我们去评判代码的整体质量

我们说了一些经典的设计原则,比如SOLID原则,DRY原则,KISS原则,YAGNI原则,LOD原则

这些原则的描述并不复杂,但是比较抽象,需要去透彻理解其设计的初衷,掌握其可以解决那些编程问题,常用的应用场景

SOLID原则并非一个原则,而是包含了单一职责原则 SRP,开闭原则 OCP, 里氏替换原则 LSP.接口隔离原则ISP,依赖倒置原则 DIP

单一职责原则是划分类职责的重要参考依据,保证代码高内聚的有效手段,是面向对象设计的前两步,单一职责原则难点在于,对于代码职责是否足够单一

开闭原则是保证代码扩展性的主要原则,对代码扩展性的具体解读,很多设计模式诞生是为了提高代码的扩展性,为了满足开闭原则的,实际上,开闭原则的理解为,最小化的修改代价去添加新功能,所以,在开发时候,最好思考下,在未来有扩展的情况下,能否不进行大的代码修改,就能完成

依赖倒置原则用于框架层面的设计,高层模块不依赖于底层的模块,共同依赖于一个抽象规则,实际上依赖倒置中更加常见的是依赖注入,包括依赖注入的框架

KISS原则和YANGI原则是两个万金油的原则,小到了代码,大到了架构,产品,都能套用这两个,YANGI偏向于暂时不需要的先不做,KISS表示要保持简单,这两点说起来容易,做起来难,如果去具体的划分呢?

DRY原则主要是不要写重复的代码

LOD是最小知道原则,不该有直接依赖的类,不要有依赖,有依赖关系的类,只依赖必要的接口

单一职责原则实现了高内聚,而LOD最小知道原则实现了松耦合

编码规范

编码规范对于新入职的,开发经验不多的程序员,很重要,至少能保证写出来的代码不会太烂,而且编程规范比较具体,不像是设计原则,模式,思想那样的抽象,而是能够更加容易的落地执行

编码规范最首要影响的就是,代码的可读性问题,在编写代码的时候,将可读性放到首位是比较好的,只有可读性比较好,才能更好进行修改,扩展,重构

重构技巧

重构是能够保证代码质量不腐化的手段,利用上述的面向对象,设计原则,设计模式,编码规范的理论,在重构的时候,上面作为评测的标准

持续重构除了保证代码的质量,还能避免过度设计

我们进行重构的区分,分为了大规模的重构和小规模的重构,不管哪种重构,都需要保证重构不出错

设计模式

设计原则相当于编程心法,设计模式相当于具体的招式,设计模式针对软件开发的设计问题,总结出的解决方案,或者设计思路,我们使用设计原则来评判代码设计哪里有问题,然后通过具体的设计模式来改善,

设计模式可以分为三个类型,创建型,结构型,行为型,其中,创建型设计模式主要解决对象的创建,结构型主要解决类或者对象的组合,行为型主要解决 类和对象的交互问题

常见的经典设计有多重,但是并不常见,主要有单例,工厂,建造者,代理,装饰器,适配器,观察者,模板,策略,职责链,迭代器,主要就用这些类型的

课后思考

如何记住上面的知识点

知识都是厚积薄发,先读,多读,最后自然能够融会贯通,就好比突然醍醐灌顶一样,一瞬间突然就发现自己能读懂源码了,再次之前,要有着大量知识积累

发表评论

邮箱地址不会被公开。 必填项已用*标注