知乎网友:这是哪个傻逼写的代码 ?

想写出高质量、易维护的代码,一定离不开编码规范和设计模式。编码规范的相关文章,公众号Java后端发布过很多:

而设计模式的重要性也不言而喻,很多开发者认为设计模式只有在面试中才会用到,其实不然。当你有了丰富的开发经验之后你会发现,构建一个系统困难的并不是编码,而是设计,一个精心设计的系统,会多方收益,特别是在维护和代码重用领域。 所以,设计模式的运用可以给软件开发带来很大的价值和收益,有一定的开发经验后肯定会体会到这一点,学习设计模式虽然不能在短时间内给你提升,但潜移默化中会增强你的编码能力。

从程序诞生开始,各种编程语言、技术框架层出不穷,其技术不断更迭很大的一个目的就是使得构建的系统有更好的扩展性和可重用性。我们在系统设计的时候追求高内聚低耦合,面向对象的思维便是解决这一问题的产物。而设计模式与面向对象思维不太一样,设计模式是人们总结的编码经验,目的是代码可重用性、让代码更容易被他人理解、保证代码可靠性。23 中设计模式中的编码思维可以被反复使用,很多人看自己多年前写的代码就是下面的感觉

偶然间看到自己多年前写的代码

类似此动图的段子还很多,昨天刷知乎就看到了一个有趣话题:看自己几年前写的代码是怎样的一种感受?

www.zhihu.com/question/40097501?sort=created

ZM-BA*

不用看几年前的,几个月之前的代码就够让你怀疑自己当初智商的了

加了个油王小*

有这么一个段子: 

写这段代码的时候,只有上帝和我知道它是干嘛的。 

几个月后。 

只有上帝知道了。

bhuztez

看了一下发现就TODO的内容比较有吸引力

吴*

这是哪个傻逼写的代码

SuperFas**

哇这变量名浅显易懂, 

哇这库用得巧夺天工, 

哇这算法写得还不错…… 

这是不可能的…… 

真实情况:

妈的当年没会用这个库在那瞎用, 

妈的这代码风格就是一坨屎, 

妈的一看全是冗余代码, 

妈的我想自己重写, 

妈的没时间。

各位有没有类似的感受,可以在留言区留言哈~

在工作过程中,我们会积累一些编码经验,自己总结了一套高效的编码思维和技巧,而设计模式是人们总结的编码经验,都是非常经典的设计思维,我们可以借鉴学习。而要想体会设计模式的思想,需要很长时间实践才行。

如果你带兵打仗,编码规范和算法能力就可以比作单兵的作战素质,而设计模式则是你的排兵布阵。

前几天发布了一篇文章:Spring 中运用的 9 种设计模式,有读者留言,看不懂设计模式,希望余生能看懂设计模式... 并且希望推荐一些设计模式相关的学习资源。

设计模式是工程师必备知识,也是面试高频考点,接下来就设计模式这一块的知识,给大家推荐一些不错的学习资源。对下手学习设计模式没有头绪的朋友可以转发本文,在朋友圈翻找查看也方便。

1. B站

不可否认的是,B站已经称为年轻人寻找学习资源的好去处。各种领域都可能在B站上找到学习资源,B站的网友说:说出来你可能不信,我的研究生是在 B站 读完的 。。。

如果你有大把的时间可以采取观看视频教程的方式学习,这样容易理解但效率低。最重要的是 B站 没片头广告,还能倍数播放。如果你没接触过设计模式,我推荐去B站找资源去学习吧。当搜索设计模式四个字,会有很多视频。

在这里,我推荐两个视频,对有选择困难症的读者可以看一下这两个视频教程:

图解 Java 设计模式

https://www.bilibili.com/video/av57936239

此教程可能不是很新,但是非常经典,入门足以。设计模式是一种设计思维,其实看新的旧的都一样。这个视频设计模式讲的比较全,会有代码实践、图文结合,易于理解。

最新2019 设计模式

https://www.bilibili.com/video/av75920461

这个教程比较新,使用 IDEA 编辑器。但是 23 中设计模式不全,只是讲解了常用的几个。

2. GitHub

GitHub 是我常逛的地方,推荐两个不错的设计模式学习 rep, 都是国人创建的...

 DesignPattern Star 1.1K

此项目设计模式的代码实现是 Java,代码写的比较清晰条例所以推荐给大家。此 rep 用例子讲解设计模式,摘取一段此教程关于适配器模式的描述:

适配器模式

定义:将一个类的接口转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以相互合作。这个定义还好,说适配器的功能就是把一个接口转成另一个接口。

  • 以充电器为实例: 手机充电器一般都是5V左右吧,咱天朝的家用交流电压220V,所以手机充电需要一个适配器(降压器)

  • 一部手机: Mobile.java

  • 手机依赖一个提供5V电压的接口: V5Power.java

  • 我们拥有的是220V家用交流电: V220Power.java

  • 适配器,完成220V转5V的作用:V5PowerAdapter.java

  • 最后测试:给手机冲个电:

Mobile mobile = new Mobile();
V5Power v5Power = new V5PowerAdapter(new V200Power());
mobile.inputPower(v5Power);

此项目也有对应的博客地址:https://jingbin.me/DesignPattern/,rep下载下来看源码,博客看分析。这样效率会高。下面是此项目的结构截屏:

design-pattern-java Star 511

此项目也是 Java 代码实现的设计模式,不过更推荐此项目对应的博客学习:https://gof.quanke.name/。博客包括 100多篇与设计模式学习相关的文章,涵盖了七个面向对象设计原则和24个设计模式(23个GoF设计模式 + 简单工厂模式)。

3. 书籍

1. 大话设计模式

本书通篇都是以情景对话的形式,用多个小故事或编程示例来组织讲解设计模式。如果看过《大话数据结构》的朋友会对这本书的讲解方式很熟悉,没错程杰老师就是擅长用故事讲技术。(大话设计模式有很多同名的书,在这里推荐程杰老师的,豆瓣评分 8.3 )

2. 设计模式

这本书适合理论学习,如果你没接触任何关于设计模式的概念,或者刚刚入门,答应我,别碰这本书。

除此之外,慕课网也有一门不错的设计模式课程,Geely 老师主讲。近期有面试的读者朋友,可以去看这门课。

4. 总结与参考

如果你想面试突击,推荐上面提到的 图解 Java 设计模式 课程和慕课网 Geely 老师的课程。如果你是想深入浅出的学习设计思维推荐《大话设计模式》这本书,如果你有丰富的编程经验,去看 《设计模式》 黑皮书吧。

[1]  www.zhihu.com/question/25432487/answer/30821390

[2]  blog.csdn.net/u014144901/article/details/80518955

[3]  www.BliBli.com

[4]  www.zhihu.com/question/40097501

 


-END-

如果看到这里,说明你喜欢这篇文章,请转发、点赞

1. 教你用纯 Java 实现一个网页版的 Xshell

2. Chrome 开发者工具的 11 个骚技巧

3. Java 中一个令人惊讶的 BUG

4. 如何更新线上的 Java 服务器代码

在看 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值