大家好,我是若川。之前送了很多书,现在又和异步图书合作再次争取了几本书,具体送书规则看文末。
所谓练武不练功,到老一场空,以技术为驱动的程序员同样如此。面向对象编程范式、设计原则、代码规范、重构技巧和设计模式这些程序员基本功在根本上决定了这个职业的发展高度。把这些基本功练好,可以让你成为一个合格且优秀的程序员、摆脱“码农”身份成为真正的技术专家。
今天推荐一本前谷歌工程师王争重磅新书《设计模式之美》,这本书来源于极客时间高口碑专栏,那么这本书所讲的基本功到底是什么?是如何影响程序员的,又该如何修炼以帮助我们在程序员这条赛道上跑得更快、获得更高回报。我们一起来了解吧。
▲ 点击图片,开始你的程序员基本功修炼之路
现在应该是五折,约50~
决定程序员发展的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个程序员的基本功表现与功效,及其之间的相互关系。想要写出高质量的代码,除了积累这些理论知识之外,实践是必不可少的过程,只有经过了实践才能把理论落实,遇到问题的时候可以快速定位知识点从而思考出思考出解决方法。
小争哥是如何教程序员锻炼基本功的
小争哥深谙此道,从实践出发,使用大量真实代码案例来帮助程序员修炼这些基本功。
实践是检验理论的唯一标准
理论落地才有意义,不然只会空口谈论一遇到实际问题就无从下手则一点用处都没有,就白学了。
所以小争哥在使用通俗的语言解释理论的同时,搭配全书2w多行代码、200多个实战项目案例来形象地说明和展示什么是面向对象编程、设计原则与设计模式实际效果是怎么样的、“烂代码”是如何影响项目进度,以及如何进行重构。
这些代码与案例是他过去十几年工作中积累的丰富经验,源自真实的项目,针对每一个知识点重新设计的,实践性极高。对于初学者,或者开发经验不足的程序员来说,这些宝贵而丰富的示例能够帮助他们快速理解这些基本功与技巧的抽象概念,和在实际问题中的应用。
实践是检验理论的唯一标准,只有在实战中去亲身感受、体会这些理论该如何使用,才能够从根本上理解和掌握这些基本功。通过跟随书中大量的代码实战,我们能够很快地掌握一套提高自己代码质量的方法与技巧,从而告别“烂代码”。
主动学习,独立思考,深度理解基本功
在实战的同时,也不能忽视独立思考的力量。
就像在设计模式部分所说,设计模式也是会随着编程语言的发展而发生变化,它们并不是始终如一。在不同的情况下它们可能会有不一样的表现,现在它是大家遵守的规范,也许再过几年就会被弃用——设计没有标准答案。
小争哥只是教会我们这些基本功,但是没有让我们专信、迷信本书中所有的内容。大师的方法与思想也是一样,如果它能够指导我们改善自己的代码,那么就采用;如果它不能改善代码,并且在一定程度上让代码质量下降了,那么就需要思考这其中的原因,从而找到更有效的方法。
在书中每一个章节最后,他都设计了1~2道思考题,这些题目有些是代码设计相关的开放性问题,有些是具体的代码优化问题。我们在看完本章节内容的时候,对后面的问题花上一点点时间进行思考尝试解决,对于本章节知识掌握有着极大的帮助。
全方位夯实基础,无死角,无漏洞
虽然小争哥书名字叫《设计模式之美》,但其实有一点“以偏概全”,因为本书是以编写高质量代码为主旨,全面讲解了面向对象编程、设计原则、代码规范、重构技巧和设计模式这5个程序员基本功的概念与修炼方法。
第1章对这5个基本功做了一个基本的概述,厘清了它们之间的关系,帮助我们建立程序员基本功的概念体系。
第2~5总共4章,分别介绍面向对象编程、设计原则、代码规范、重构技巧这4个编程基本功,讲解它们是如何在实际应用中发挥作用的,使用大量的实践代码帮助我们理解和运用。
第6~8章都是讲设计模式,分别是其三个分类:创建型、结构型和行为型设计模式。对包含的22种具体的设计模式做了非常细致的分析与实际应用展示,让我们对于常用的设计模式有切实的了解,对于不常见的设计模式也有着大概的认识。
在这样的内容安排下,我们能够全方位地夯实自己编程基础,修炼好自己的程序员基本功,从而避免练武不练功,到老一场空的尴尬境地。
和小争哥聊程序员的基本功
不论是编程初学者,还是有经验的程序员,都不应该忽视基本功的修炼。只有把自己的基础打好,把程序员基本功掌握好,才能够支撑起自己日后在职业上的更高发展。
在6月23日晚上8点,小争哥会准时作客异步直播间,和大家聊一聊基本功对于程序员的重要性。同时向大家介绍更为详细有效的锻炼基本功的方法与技巧,手把手教大家写出高质量代码,使项目更好维护、通过心仪面试、推动升职加薪等变得手到擒来。
文章编辑:沙鱼 审校:桐希 张涛
参考来源:
[1] 王争.《设计模式之美》.[M].北京:人民邮电出版社:2022.
[2] 王争, 设计模式之美.专栏
文末福利
小伙伴们,可以在本文留言区留言为什么想要这本书~
抽奖规则:在我的公众号结合留言内容随机抽1位,获得新书包邮送。
截止时间:9月26日(周一)晚8点,可能延后,以置顶留言为准。
其他几本其他方式送出。
中奖小伙伴,我会联系兑奖。也可以提前扫码加我微信 ruochuan12 以防失联。或者发送源码两字参与源码共读。