再读Bob大叔三部曲之代码整洁之道

再读Bob大叔三部曲之代码整洁之道

1. 认识三部曲的缘故

非常有幸能够在入行之初就读到Robert C. Martin的代码整洁之道的三部曲,在囫囵吞枣的读完三本书后,收益良多,之所以能够接触到这个系列的丛书,还得追溯到在研究生实习阶段,当时所在实习公司的一位经验丰富的前辈就非常推崇这本书,强烈建议我去读一读,了解代码整洁之道,可惜当时由于实习和学业压力,并没有耐下心来好好读一读这本书,毕业以后,参加了工作,由于公司遵循的是华为代码规范,看着华为的代码规范指导手册,里面的很多准则都和当初读的代码整洁之道吻合,这让我又想起了这本书,当我在微信读书里搜索这本的时候,发现搜索到两本,并非一本,还有一本是代码整洁之道——程序员的职业素养,然后就在关注了Bob大叔,发现这个Clean Code 三部曲,第三本就是架构整洁之道,读完这三本书后,发现这是非常适合初学者阅读的一个系列,当然我说的初学者不是连编程基础都没有的小白,而有一定编程经验的程序员,想进一步提升自己的水平和职业素养。鲍勃大叔的三部曲给读者展现了一个专业的大师级程序员,是如何设计代码和编写代码的,还有对待工作的需求的态度是什么样的,这些都给了职场新人非常好的示范和启示,正如第一部前言所述,神在细节之中,愿你我在读完此系列之书后,能够有所收获,勉之,勉之。

去年年末开始重看第一部,到今年陆续看完三部,阅读之时,总有朦胧之感,大概是由于自己水平水平未到,开发经验有限,现在在程序开发上,有了一些项目经验,所以重读此系列,看是否有些新的收获。

2. Clean Code

目前我所从事的方向是单片机领域的嵌入式开发,在单片机上,尤其是裸机开发,代码量相对PC和手机平台上较小,甚至多个项目的代码都在一个仓库之内,各个项目仅仅作为一个文件夹存在于整个框架之内。在读这本书时,文中提到,Clean Code在代码量越大,其价值越大。那像嵌入式领域是否对Clean Code的要求可以降低吗?其实不然,我认为在软件开发的各个领域,其本质都是一样,将人类的思维,拓展为机器语言,通过指令执行,这就是软件开发,嵌入式领域虽然代码量相对较小,而且也更接近硬件底层。但是由于硬件快速发展,我们有时不得不在更改硬件的基础上,不修改软件的行为。如今国产替代方案也如火如荼,这对于软件的要求是进一步提高,不能因为硬件的修改,就需要把软件全部推到重写。所以软件的开发都是有边界的,与硬件高度相关的驱动部分,就是固件部分,如果软件也依托于某个硬件平台,那就不能称之为软件,而是固件。如果一个设备的硬件发生更改,我们只需要替换其中的硬件驱动部分,而不改动软件,那么这个软件程序方可称得上是设备无关的软件。软件边界的存在,使得不管是在PC,手机还是单片机的嵌入式平台,关注的方面其实都是有限的,从AOP编程来看,切分关注面,在各个平台,底层思维都是类似的。所以在其他平台上的遵循的规范,在嵌入式领域也同样适用。

Clean Code的第一章节,讲述了整洁代码的意义和混乱的代价,这可以说是一个经验开发非常丰富的程序员,对刚入门的菜鸟的谆谆教诲,有些开发经验之后,就能发现,在开发时能够将细节整理,对之后的开发有着非常大帮助,在CleanCode上的时间投入,大概率会帮助我们节省时间。第二章部分讲解了有意义的明明,可以看到Bob大叔讲解的非常细致,细致到函数变量的命名。后面讲解了注释、格式较为基础的部分,当然我较为关注的是函数和类该如何做到整洁。在函数编写上,Bob认为,函数应该短小、只做一件事,并且在一个抽象层级上,尽量少的参数,还有就是使用异常而非错误码。在错误处理这一块,Bob大叔的给了非常有效的经验,在此之前我对错误的处理思考较为欠缺,阅读了错误处理这一章后,收获颇多。

单元测试对我来说是比较矛盾的一个点,一方面,我明白单元测试较为重要,另一方面,会觉得写单元测试较为繁琐,尤其看了周立功的文章对DDT的批判,让我对测试驱动开发有些疑虑,但是在开发一个较为复杂的软件系统后。发觉,如果做不到测试随开发而动,只修改代码,而不懂测试代码,那么最后测试代码就将会被抛弃,所以将测试代码当作业务代码来写,是一个非常务实的选择,当然DDT里有些较为教条的操作,我觉得可以抛弃。在CleanCode里有相当的示例程序,第二次阅读也同样仓促,并未能耐下心来仔细阅读其中代码,尤其迭代和改进两章,就如大师在手把手教学一般。

3. 收获

正如Bob大叔在书尾所言,这一本书并非是详细列出了所有CleanCode的编写方式,而是给出了一套价值体系,让新入行的读者明白,什么的代码是好的代码,对于我这种跨行而来,经验较浅的开发人员无疑相当于从门外汉领到了门后,得以一窥专业程序的价值观和思想体系。同时,我也在B站看了一些UP主推荐的一些其他书籍,有感大道至简,殊途同归,专业程序员的最终所认同的原则和哲学思想大抵都是类似的,只要不断学习,最终都会达到专业水平的位置。

相关推荐

  1. Bob大叔三部曲代码整洁

    2024-01-08 16:12:01       65 阅读
  2. 代码整洁总结

    2024-01-08 16:12:01       40 阅读
  3. 前端代码整洁规范

    2024-01-08 16:12:01       46 阅读
  4. 代码整洁学习笔记

    2024-01-08 16:12:01       24 阅读
  5. 【21】感 - 架构整洁(三)

    2024-01-08 16:12:01       17 阅读
  6. 【19】感 - 架构整洁(一)

    2024-01-08 16:12:01       20 阅读
  7. 阅读笔记——《代码整洁》ch2

    2024-01-08 16:12:01       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-08 16:12:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-08 16:12:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-08 16:12:01       82 阅读
  4. Python语言-面向对象

    2024-01-08 16:12:01       91 阅读

热门阅读

  1. Spring Boot 生产就绪中文文档-上

    2024-01-08 16:12:01       57 阅读
  2. Python实现大数据量对比

    2024-01-08 16:12:01       70 阅读
  3. 泛型擦除到底是怎么一回事

    2024-01-08 16:12:01       67 阅读
  4. 条款34:区分接口继承和实现

    2024-01-08 16:12:01       53 阅读
  5. es相关介绍:yml配置、基础接口及方法介绍

    2024-01-08 16:12:01       50 阅读
  6. 尝试中-分3个独立开发周期

    2024-01-08 16:12:01       68 阅读
  7. axios 后端不配和添加api

    2024-01-08 16:12:01       64 阅读