2W 行 | 深入理解「设计模式」_java

你好,我是悟空。

如何将设计模式运用到项目中?如何理解设计模式的妙用?如何提高代码质量?如何做好重构?

这些问题值得我们每个软件工程师去深入思考和总结。

今天推荐一本书:《设计模式之美》,这本书我看过,内容非常丰富,从点到面,一步一步深入讲解,新手也能快速掌握~ 本书2w行代码、200个实战项目,助你修炼5大编程基本功。

回馈粉丝,文末送书!

所谓练武不练功,到老一场空,以技术为驱动的程序员同样如此。面向对象编程范式、设计原则、代码规范、重构技巧和设计模式这些程序员基本功在根本上决定了这个职业的发展高度。把这些基本功练好,可以让你成为一个合格且优秀的程序员、摆脱“码农”身份成为真正的技术专家。

今天推荐一本前谷歌工程师王争重磅新书《设计模式之美》,这本书来源于极客时间高口碑专栏,那么这本书所讲的基本功到底是什么?是如何影响程序员的,又该如何修炼以帮助我们在程序员这条赛道上跑得更快、获得更高回报。我们一起来了解吧。

2W 行 | 深入理解「设计模式」_java_02

▲ 点击图片,开始你的程序员基本功修炼之路

决定程序员发展的5个基本功

小异了解到不少程序员在学习和实际编程过程中看重技巧类的东西,而忽视基本功,到头来发现自己的代码结构混乱、难以维护、拖累整个项目,源码看得似懂非懂。整体情况非常糟糕,这一切都限制着自己的职业发展。

想要改善这些情况,写出一手高质量的代码,获得更为优渥的回报,需要从以下5个基本功方面入手,认认真真,潜心锻炼。

面向对象编程

面向对象编程(Object Oriented Programming,OOP)是一个主流的编程范式,包含封装、抽象、继承和多态四大特性。按照小争哥在书中的非严格限定下的定义,可以这样说:

面向对象编程就是一种将对象或类作为代码组织的基本单元来进行编程的编程范式或编程风格。

学习和使用这种编程风格,主要是因为它有着非常丰富的特性,能够解决系统的可维护性、可扩展性等问题。并且可以用来实现更多复杂的设计思路,从而成为许多设计原则、设计模式编码实现的基础。

相对于其他的编程风格,面向对象编程的代码更符合人们观察和解决问题的思维方式,从逻辑上让代码的可读性变强——更容易被人理解,也就更容易扩展和维护。在很多情况下,评判代码质量好坏的标准,就有可读性与可维护性,所以学会和掌握面向对象编程这个基本功,可以初步解决这两个方面的问题,从而写出高质量的代码。

设计原则

所谓的设计原则就是许多先驱们在做代码设计时总结的一些宝贵经验,相比单纯看它们的定义,知道它们的应用场景和能够解决什么问题更重要。

因为开发的时候会面对各种各样不同的需求,如果我们不了解设计原则,对于每次的项目需求都毫无准备,那么在前期的代码设计工作上将要花费大量的时间与精力,得不偿失。有了世界上无数大师们的经验总结,我们就可以通过分析需求从而选择合适的设计原则,大大减少初期开发成本

小争哥在他的书中主要讲了6大类9个设计原则,分别是:1)单一职责原则(SRP);2)开闭原则(OCP);3)里氏替换原则(LSP);4)接口隔离原则(ISP);5)依赖反转原则(DIP);6)KISS 原则、YAGNI 原则、DRY 原则和 LoD 法则。

通过认识和了解这些设计原则,我们能够清楚地知道为什么使用这种设计模式,并且知道何时如何恰当地使用设计模式——基本功之间也是相互关联的。

设计模式

设计模式同样也是程序员基本功,是为了解决代码的解耦、可扩展性问题:它是指针对软件开发中经常遇到的一些设计问题而总结的一套解决方案和设计思路。这些设计模式随着编程语言的发展与演变,在不同时代有着不同的表现。

而当下比较常用的设计模式并不多,小争哥在他的书里介绍了22种设计模式,主要分为创建型结构型行为型三个大类。学习设计模式同样需要关注它们的典型应用场景与能够解决的问题,还需要注意不能过度使用!

这些设计模式代表了最佳的实践,是无数开发人员经过漫长的时间试验和错误总结出来的。作为新手学习设计模式有助于他们通过这种快捷简单的方式来学习软件设计,作为有编程经验的程序员学习设计模式则能够帮助他们在开发过程中更快选择最佳解决方案。

代码规范

当初期工作做好,开始写代码的时候,就需要注重代码规范这一基本功了。相比设计原则与设计模式,代码规范更为简洁与直接,注重的是代码细节。它是为了解决代码的可读性问题,让代码的维护变得可行并且更简单。

小争哥在书中总结了包括变量函数的命名规范代码注释规范等17条能够有效改善代码质量的代码规范。一般来说我们并不需对这些规范有太多的思考,只要遵循这些规范即可让自己的代码可读性提升一个很大的档次。

同时他还在书中介绍了一些代码的“坏味道”,帮助我们认识和了解什么代码是不规范的,如何避免与优化,从正反两面同时入手提高代码质量。

重构技巧

只要项目还在运转,重构就是不可避免的。重构技巧作为程序员的基本功,在软件开发中是不可或缺的能力,它能够保证项目代码质量稳定,让代码不至于变得“腐朽”而拖垮整个项目。

如前文所说,这些程序员基本功都是相互联系的,也就是说面向对象编程、设计原则、设计模式、代码规范都是重构的工具。设计原则与设计模式很大的一个应用场景就是重构;重构分为大重构(大规模,高层次)和小重构(小规模,低层次),代码规范就是小重构的主要依赖。

无论使用何种方式去重构代码,需要谨记的是重构的目的——让代码质量提升,不应该过度使用代码设计,“为了设计而设计”,导致代码的复杂度过高,从而降低代码质量。

碍于篇幅,小异只是简单介绍了这5个程序员的基本功表现与功效,及其之间的相互关系。想要写出高质量的代码,除了积累这些理论知识之外,实践是必不可少的过程,只有经过了实践才能把理论落实,遇到问题的时候可以快速定位知识点从而思考出思考出解决方法。