虽然薪资倒挂在互联网公司是常态,最近有个朋友偶然得知新同事薪资是自己的 Double 时,他还是心态崩了。
不过几次 code review 之后,这位朋友就释然了,声称新同事的代码堪称教科书级别:
  • 他的代码结构都很清晰易读,不用注释也能看明白
  • 足够简洁,运行效率高
  • 灵活可扩展,就算以后业务有变化也很容易加东西
这种评价几乎是跪服。幸好他心态够好,迅速认清了现实,抓紧弥补以后才有机会去倒挂别人。
正好在跳槽季,我就顺便总结了些经验,无论是面试还是以后工作,这些都是技术圈颠扑不破的规律,对你肯定有用。

即使做 CRUD ,代码也要更漂亮

做业务开发大多数时候需求都很简单,但是每个人有不同的实现方式。但凡对自己有要求,就不能只满足于实现功能,更要想怎样才能让你的代码简洁、高效、可扩展,这是你和同行拉开差距的分水岭。代码体现出你的基本功和思维,也能看出你做系统架构设计的潜力。

写出教科书级的代码,就得跟着经典学

总有些人问,我该怎么提高代码水平?一方面是多练手,熟能生巧,另外就是多学优秀的代码,学设计模式就是最佳的捷径。
设计模式是多年开发从业者们经验的总结,算我们行业的红宝书,尤其是工作一到三年左右,最好都要掌握。
它涉及的很多知识点,比如多线程编程、异步和同步编程模型、内存池等等知识点,工作之后你会有更清楚的认知。设计模式是否好用,什么时候该选择哪种设计模式,这些都在你有一定工作经验后更好校验结果。如果你工作时意识到了自己基本功薄弱,现在开始学是最好的。

设计模式的海量知识,如何学才高效?

  • 经典设计模式的书籍很多,但很多人却因为枯燥、体量大,难以坚持;
  • 设计模式列举的各种场景太抽象,就算吃透了知识点,也难以落地;
  • 设计模式不是万能药,照搬设计模式,却无法解决实际问题。
经典之所以称为经典,是因为它的实际作用,能让你切实提高编程技巧,而不是空学一堆理论。
最近看到一个课程,「趣学设计模式」,非常适合上班族来学,体量很精简浓缩,只留下了最核心最重要的知识点,比起一些经典大部头书籍,这个课程不会让你望而生畏,浪费时间。
讲师黄靖锋,是前京东资深系统架构师,深入研究算法与编程近十年,对程序设计和架构设计都很有经验,他的多年工作经验从设计模式中获益良多,现在把他的学习思路和实践方法都倾囊相授。

真正高效编程,是从思维开始的

课程第一模块先给你程序设计的方法论,掌握这些可以避免很多弯路。比如 Unix 哲学传递出的组合思维,可以让你真正做到随意组合以应对多变的需求;经典的分层思维,更能帮助你看透现代架构设计对编程影响的本质;工程思维带你有目的、有计划、有步骤地解决开发问题,高效率交付可靠的软件产品;对象思维让你的代码更加可读,提高代码质量,敏捷开发。

10个核心编程原则,如何开箱即用

编程原则可以说是程序设计的规范,这里只选用最重要最基础的,了解这些之后,你再拆解设计模式,就很容易理解他们为什么那么设计了,也对你自己以后灵活套用设计模式更有帮助。
比如,面向对象设计原则(SOLID)本身增加了设计与实现的复杂性,但我们却希望通过保持最终简单性来提升产品的体验,这如何做权衡和取舍呢?再比如,惯例原则(CoC),编程时遵循的很多约定习俗其实很重要,那如何真正发挥它的作用?等等。

结合案例,拆解23种设计模式

这一模块是你学习的重点。按照基本分类顺序:创建型模式、结构型模式和行为型模式,详细分析这 23 种设计模式如何在实践中去应用,和你阅读书籍与资料不同的是,这里会重点讲解一些和实际场景相关的案例问题,剖析选用某种设计模式的原因,以及具体问题的解决思路。

设计模式不是银弹,活学活用才是王道

很多人即使吃透了23种设计模式,却只能死板套用,或者非设计模式不用,就是缺乏灵活应用的技能。设计模式作为不同项目中总结出来的通用经验,却不是全能方案,它需要考虑适用范围。好的程序设计从来不是看用的模式有多少,而是看如何合理利用模式的设计思想,以及如何利用模式解决真实的问题。
黄靖锋在课程里举了一个他自己的例子,我深有体会,尤其设计模式初学者很容易进入这种误区。
比如,我曾经在负责一个网关系统时,就陷入过“模式综合症”,那时的我无时无刻不在想该如何使用各种模式,即便是一个小的过滤规则模块,我也想着能不能使用责任链模式,而实际上那个需求只需要简单的白名单就能解决。最后的结果当然就是代码变得更复杂、更难以维护,并导致大量重构和沟通工作涌现。
所以说,学习设计模式是为了启发我们的思考,而不是“手里握着锤子,满世界找钉子”。
——「趣学设计模式」
看了这个课程的目录,“锤子”和“钉子”都给你了。就像你不能一次建造一栋楼,学习设计模式的“锤子”也不是一蹴而就的,这 39 讲的内容你得主动开始,持续坚持,才有源源不断的新收获。
继续阅读
阅读原文