2w行代码、200个实战项目,助你修炼5大编程基本功

简介: 2w行代码、200个实战项目,助你修炼5大编程基本功

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

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


决定程序员发展的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点,小争哥会准时作客异步直播间,和大家聊一聊基本功对于程序员的重要性。同时向大家介绍更为详细有效的锻炼基本功的方法与技巧,手把手教大家写出高质量代码,使项目更好维护、通过心仪面试、推动升职加薪等变得手到擒来。

相关文章
|
4月前
|
消息中间件 设计模式 Java
如何高效地阅读源码,我总结了18条心法,助你修炼神功
大家好,我是三友~~ 这篇文章我准备来聊一聊如何去阅读开源项目的源码。 在聊如何去阅读源码之前,先来简单说一下为什么要去阅读源码,大致可分为以下几点原因: - 最直接的原因,就是面试需要,面试喜欢问源码,读完源码才可以跟面试官battle - 提升自己的编程水平,学习编程思想和和代码技巧 - 熟悉技术实现细节,提高设计能力 - ...
如何高效地阅读源码,我总结了18条心法,助你修炼神功
|
9月前
|
缓存 NoSQL Dubbo
太牛了!腾讯T9耗时69天整理出最全架构师进阶核心知识点笔记
每一个程序员应该都想着如何快速提升自己(反正我是这样想的),从程序员进阶到架构师再到技术专家再到CTO 。当然这其中需要大量的知识储备,是一个不断学习的过程,话不多说下面我直接上图。
|
9月前
|
运维 算法 架构师
又爆新作!阿里甩出架构师进阶必备神仙笔记,底层知识全梳理
据有关数据表明,目前Java程序员这个群体的数量不减反增,行业内的竞争也是越来越严重。在同一时间入行的人,经过一段时间的学习后,差距就会显示出来。其实出现这样的原因大多数都是因为学习的方向出了问题。大多数人学Java刚开始只是为了快速就业,但是在工作了之后却没有一个好的学习路线,那些其实很重要的东西只是因为工作上用不到从而忽略掉了,慢慢的才发现自己与别人之间已经存在很大差距了!
|
11月前
|
设计模式 前端开发 JavaScript
写给初中级前端的高级进阶指南(万字路线)
由于公众号文章不允许外链,需要跳转文中链接的同学可以在脚注里找到各个的资源链接,也可以通过点击阅读原文更加方便的跳转链接
|
12月前
|
设计模式 安全 关系型数据库
2w行代码、200个实战项目,助你修炼5大编程基本功
2w行代码、200个实战项目,助你修炼5大编程基本功
|
11月前
|
缓存 JavaScript 前端开发
前端常规面试题 - 初级开发01(含答案)
浅谈一下如何避免用户多次点击造成的多次请求
196 0
|
Java
个人网易云java后端开发编程笔试题目
个人网易云java后端开发编程笔试题目
110 0
个人网易云java后端开发编程笔试题目
|
自然语言处理 JavaScript 前端开发
看了涡流大佬的面试文章的总结(框架通识, 看代码说结果)
看了涡流大佬的面试文章的总结(框架通识, 看代码说结果)
|
存储 移动开发 前端开发
从零开始搞基建(1)——前端代码规范
对所有引用都使用 const,不要使用 var。原因:这样做可以确保你无法重新分配引用,以避免出现错误和难以理解的代码。 如果引用是可变动的,使用 let 代替 var。原因:let 是块级作用域的,而不像 var 属于函数级作用域。 坚持使用全等 === 摒弃相等 ==,原因:相等会进行隐式的类型转换。 使用浏览器全局变量时加上 window 前缀,document 和 navigator 除外。
|
程序员 开发者
开发者故事|代码虐我千万遍,我待代码如“初恋”
许多人在选择“程序员”这一职业的背后,或多或少都会有故事可讲。本文是我们与一名 Erda 的用户沟通时深度挖掘到的故事,征得本人同意后对其进行了整理,并设立了【开发者故事】这一栏目,旨在收纳广大同学的故事。
246 0
开发者故事|代码虐我千万遍,我待代码如“初恋”