文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何提升代码质量

2024-12-02 04:15

关注

有这么一句名言“Talk is cheap, Show me the code.” 不管是新人还是老手,都特别想提高自己的代码质量,至少让别人看着舒服。我在以往的工作经历中,并没有太重视个人编码的能力,包括正确性、美观性还有效率。工作几年的人还写出那么难看的代码,说出去会很丢人的,所以提升自己的编码水平显得尤为迫切。

那么可以从哪些方面着手去提升自己的能力呢?

书籍推荐

《重构》

世界顶级、国宝级别的 Martin Fowler 的书籍,可以说是软件开发领域最经典的几本书之一。目前已经出了第二版。

这是一本值得反复阅读的书籍,配合工作上的实践进行学习。

《重构》一书已经有明确的定义,分名词和动词两种形式。

《Clean Code》

《Clean Code》是 Bob 大叔的一本经典著作,强烈建议小伙伴们一定要看看。

Bob 大叔将自己对整洁代码的理解浓缩在了这本书中,真可谓是对后生的一大馈赠。

《Head First 设计模式》

《大话设计模式》

设计模式用于承载复杂的业务逻辑,使写出的代码简洁、易扩展。简单地说,你需要去了解业务中哪些是变化的,哪些是不变的。这些变化的东西就是复杂的业务逻辑,你需要思考如何用一种合适的设计模式去承载它,使得当它发生变化的时候,能具有很好的扩展性。这时候如果你学过设计模式,对每种设计模式的使用场景都谙熟于心,那你做起来会更加得心应手。

《Effective java 》

《Effective Java》是 Java 领域的经典著作,其影响力不亚于《Java 编程思想》。

对于一个 Java 工程师而言,在新技术不断涌现和迭代的情况下,学习的能力以及如何快速学习的能力是成长的关键。学习的方法、思维和能力给一个人成长的助推是巨大的。

其他

优秀源码推荐

因个人作为后台开发者,主要学习使用 Java 语言,所以此处推荐的也是 Java 相关的源码学习,不过大道至简,语言千千种,核心不会变。

Github 上有不少 star 数极高的项目,大部分功能性比较强,涉及到的技术点也比较先进,用来学习技术确实不错,但并不是所有的代码风格都值得学习,为了避免踩坑,这里就不列举这类项目。这里推荐的源码都是 Java 生态的框架源码。

JDK

为什么要看 JDK 源码?

JDK 源码阅读顺序:

源码量那么大,不要妄想一口气都看完。最好符合你当前的目的,比如你想搞懂多线程,你就主要看 JUC,想搞懂IO 就多去看 NIO,想看常量池就去看 ClassFileParser。看模块的时候,要注意接口大于一切,或者说函数大于一切。先不要妄想搞懂所有细节,先找几个比较关键的函数,搞懂函数的作用(比如应该仔细分析一下函数名称和参数名称)然后再往下进行。

在看 Java 类库的时候要多注意类是不是 abstract 的,是不是用的模板方法,多关注函数前的修饰词,这一般说明这个函数是给谁用的。多注意这些细节而不是傻傻过一遍逻辑,能从里面学到不少关于设计的东西。还可以注意什么地方是为了之前的设计而委曲求全的做法,毕竟一个这么多年的类库,肯定不是什么地方都是完美的。

JDK 源码一定要看 Java 并发相关的源码, Doug Lea 的并发源码比较漂亮,一行行都是精华,非常值得阅读学习。

工具

看类库首推IDEA,多用 Structure,多自动生成 UML 图。先搞清楚接口和类之间的关系,再去分析函数。

最后在学习源码的过程中,不要介意看别人的博客,不要介意手抄笔记。

Spring-Framework

Spring Framework 是一个开源的 Java/Java EE 全栈(full-stack)应用程序框架,以 Apache 许可证形式发布,也有 .NET 平台上的移植版本。该框架基于 Expert One-on-One Java EE Design and Development(ISBN 0-7645-4385-7)一书中的代码,最初由 Rod Johnson 和 Juergen Hoeller 等开发。Spring Framework 提供了一个简易的开发方式,这种开发方式,将避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。

图片出处:Spring官方文档

Spring 是一个开源的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。包括在此基础上衍生的 Spring MVC、 Spring Boot 、Spring Cloud 等,在现在企业中的应用越来越广泛。无论是设计思想,代码规范,还是设计模式,接口设计,类加载,都是非常优秀的源码。

个人学习心得如下:先去看视频,大概熟悉一下 Spring 的使用情况,然后再去学习源码,此处可以阅读《Spring源码深度解析》,除了看书之外,记得打开 IDEA 查看对应的源码,如果能调试看看具体调用逻辑那就更好了。

Google Guava

Google Guava 是 Google 公司内部 Java 开发工具库的开源版本。Google 内部的很多 Java 项目都在使用它。它提供了一些 JDK 没有提供的功能,以及对 JDK 已有功能的增强功能。其中就包括:集合(Collections)、缓存(Caching)、原生类型支持(Primitives Support)、并发库(Concurrency Libraries)、通用注解(Common Annotation)、字符串处理(Strings Processing)、数学计算(Math)、I/O、事件总线(EventBus)等等。

实践

通过上述两大途径的学习,我们必须要将吸收的东西加以实践,有输入就要有输出,不然输入也就毫无意义。

这里需要着重强调 Code Review 的好处,简单整理有如下三点好处:

1. 互相学习,共同成长

无论身处什么团队,团队成员的技术能力、经验都是有差异的。

通过 Code Review,对于同样的功能实现,有经验的工程师可以给经验尚浅的工程师提供合理的优化建议。经验尚浅的工程师可以通过阅读优质代码,快速学习相关技术运用的最佳实践。如果大家技术实力相当,可能就是互相刷新思想了。

2. 知识共享

进行 Code Review 不仅仅是为了讲述代码如何编写,还要介绍其背后涉及的业务知识,在此过程中,根据提交者的描述阅读代码的逻辑,看代码实现是否跟描述一致。

通过 Review,让团队成员不再局限于项目的某一块业务,避免项目只有一个人了解项目的尴尬情况。特殊情况下,也可以及时代替别人来维护相关代码,尤其是在没有相关业务功能说明文档的情况下。

3. 统一编码风格,提升质量

代码质量大概分为以下层级:

可以正常运行——可以测试通过——容易阅读——容易维护。

Code Review 至少要让代码达到易阅读的级别。

要想做到易阅读,可不是光靠 Code Review 就够了,首先需要观察整个项目的风格,按照已有的规范编写相同风格的代码,当然每个人的风格不可能完全相同,但是要保证整体风格相似,这样维护起来不至于难受。

总结

如今写代码就像以前上学时写字一样,能写得好代码就相当于写了一手好字。如果你隔段时间回头看自己的字都不忍直视,那么可以通过临摹练字来提升自己,最终习得一手好字。

练字多了就会成为习惯,再往后写字就变成下意识的习惯。而写代码可没有那么简单,写之前需要用大脑思考,选用什么模式,如何设计,写完后要想着如何优化。

按照上文的学习方法,慢慢改善自己的编码习惯,最终达到下笔如有神的境界。

来源:Thoughtworks洞见内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯