如何写出好代码

本文作者分享了系统学习写出好代码的心得,包括设计原则、设计模式和最佳实践。推荐了《图解设计模式》、《测试驱动开发》等6本经典书籍,并强调了《程序员的职业素养》、《代码整洁之道》等书籍的重要性。通过学习和实践,旨在帮助读者提升代码质量和编写出更优秀的软件。
摘要由CSDN通过智能技术生成

本文转载于https://www.mdnice.com/writing/bc723a7756ec42d6a8c22ed29621f4e2

零、前言

如何写好代码?这是个有意思、而且经典的话题。没有标准答案,没有现成的答案可以 copy,重视经验,但真的没有方法论和最佳实践的学习材料可以借鉴吗?答案是否定的。我从2021年11月–2022年1月,花了3个月的时间,系统的学习了一下这个主题,在此做个总结。

一、内容

借用 Robert C. Martin(Bob大叔)的著作《敏捷软件开发 原则、模式与实践》书名,从设计原则,设计模式,最佳实践3个维度来给出一条学习路线,碎片化阅读永远无法建立对一个深度问题真正的、系统的理解,本文会推荐1个视频和6本书籍。

《图解设计模式》韩顺平(尚硅谷)
《测试驱动开发》Kent Beck
《程序员的职业素养》 Bob大叔
《代码整洁之道》 Bob大叔
《敏捷软件设计-原则、模式、实践》Bob大叔
《重构 改善既有代码的设计》马丁福勒
《码出高效》杨冠宝

二、详解

首先,我看了《图解设计模式》系列视频,尚硅谷的韩顺平老师在B站分享的一套设计模式的视频课程,用Java写的。 我完整的看完了这套视频课,大多是1.5倍速看的。7大设计原则、UML类图基础、23种设计模式的系统讲解,手写demo和源码分析(设计模式在源码运用体现),对于设计模式初学者很友好,我对这套课程仅仅是看完了,没有写笔记,但收获还是很大的,建立了基本的一些概念和认知,扫盲阶段完成。

然后,听完韩的课程后,还是不知道如何运用在自己的项目中,再复看一遍视频,意义不大,我选择了看经典的书籍。这次,我选择了Bob大叔,Kent beck,Martin Fowler三位大师。

《程序员的职业素养》是一本100多页的薄书,我花了一个周六的时间在图书馆看完了,书中的很多经验总结一语中的,我工作中的很多的疑惑在书中找到了答案,这是本必读的书。

《测试驱动开发》仍然是一本100多页的薄书,字字珠玑,通过一个 5美元+10法郎 = 10美元的 Demo,从0到1的从写TestCase开始,到写丑陋的程序让测试通过,重构使其符合设计原则,大师带你手把手按“不可运行、可运行、重构”的三步骤写出不那么业余的代码。TDD的实践有时在你毫无头绪,不知道怎么设计软件完成任务的时候也会有奇效。动手写代码之前,先写下测试代码,我们写的代码都是为了让测试通过,实现预期的功能,除此之外,一行多余的代码也不要写,有的时候我们要抵制先写实现代码的诱惑,严格按TDD的3个步骤来写代码。

《代码整洁之道》这本书会交给你一组标准,让你具备基本的代码鉴别能力,什么是优秀代码,什么是垃圾代码,同时也会给出一些如何写出好代码最佳实践。意识决定行动,自己写代码的时候反复提醒自己遵守这些原则,自己的代码质量就潜移默化的提升了。中文版的个别翻译有点垃圾,这在业界早就吐槽过了,不过作为第一个吃螃蟹的人,我想瑕不掩瑜吧。

《敏捷软件开发 原则、模式与实践》是本经典之作,极力推荐。如果你还恐惧学习新东西,打开本书的目录,一定会有惊喜。

《重构》在业界的地位不用赘述,能沉下心来阅读书中的重构建议,明晰何时该重构,如何重构,再利用IDE的重构功能提升重构效率,笔者在工作中就大量的运用了 IDEA 的重构功能。

《码出高效》是前阿里 P9 孤尽写的一本提升代码质量的著作,作者结合自己在阿里巴巴的质量管理的实际经验写下了本书,是对《阿里巴巴Java开发手册》的补充说明。

三、结语

以上推荐的几本书,都是业内经历时间考验的经典之作,相信系统看完这几本书以后,对读者如何写好代码会大有启发。最后,以阿里CTO程立(花名 鲁肃)的在《码出高效》一书的推荐语结束本文:

写下一行只要1分钟,但未来会被一代代工程师读很多次、改很多次。代码的可读性与可维护性,是我心目中好代码的第1标准。 ——鲁肃

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值