关于读书笔记:代码简洁之道读书笔记

44次阅读

共计 4504 个字符,预计需要花费 12 分钟才能阅读完成。

《代码简洁之道》读书笔记

前言:

​ 这本书算是一本编程必读书,对于如何优化本人的代码很有帮忙。这本书看了有将近一周的工夫,更多工夫花在了实际代码下面,依照书中给出的倡议去思考和优化本人的代码,发现其中的过程其实是十分高兴的,这次的读书笔记介绍一下从这本书中学到了那些内容。

文章目标:

  1. 致力写出简洁的代码是程序员的基本素质,时刻关注各个细节
  2. 把简略的事件做到极致,才有能力做更有挑战的事件
  3. 收集《代码简洁之道》的书籍基本知识和内容点,回顾书籍集体认为比拟重要的内容。
  4. 利用思维导图总结整个书籍的大抵内容(导图内容较为宏大)

简述:

​ 作者通过最简略的为什么要编写代码到编写简洁代码的一些倡议,从最简略的命名标准逐步扩大到办法,类,零碎,到最终利用一个理论的案例讲述作者亲身经历的一次代码重构体验,在难易度和节奏的把控比拟到位,不须要放心一上来就是简单的实践,十分具备条理。

​ 这本书的内容比拟重要的是在于实战,提供大量代码和阐明进行迭进式革新(尽管看的想睡觉),如果当做实践书去看把这本书简略扫一遍其实 毫无意义。同时这本书全书围绕着“简洁”两个字,用了大量的案例和理论教训举证各种程序员写代码容易犯的谬误,略微看看就能够看到很多倡议“很像”本人平时写代码的做法。

举荐水平:

强烈推荐,程序员必读书之一,作者提供了很多的倡议如何写出整洁的代码,同时给出代码实战怎么解决代码。

如果想要看实战代码改良局部,能够查看 附录 B 对于 SerialDate 这个类是如何进行迭进和革新的,对于学习改进代码非常有帮忙。

最大的问题可能还是本书没有配套的源代码。书中许多对于代码的优化思路在浏览的时候不易了解作者思路

思维导图:

因为这本书的笔记单靠一篇文章很难梳理完,为了节俭阅读文章的工夫集体将书本的内容提炼笔记和重点精简为思维导图,读者能够按需参考思维导图浏览:

https://share.mubu.com/doc/2o…

幕布思维导图

书籍内容分析:

重点浏览:

上面列出几个比拟重要的点,这里去掉了前面几章对于代码的迭进相干章节,留神这些 内容比拟重要,然而苦于找不到现成代码所以没有列入思考范畴(用纸看代码尽管能够然而非常苦楚并且难以了解,集体认为效率太低),所以只列出后面倡议的局部以及最终的总结局部。

PS:上面的内容摘录自思维导图

  • 第三章:函数

    • 重点

      • 时刻放弃参数的数量管制
      • 函数要返回冀望的内容,运行冀望的行为
      • 防止副作用的办法
      • 取个好名是好办法的关键步骤
    • 简介

      • 介绍如何写出更加简略并且令人夸赞的好办法
      • 函数式封装的第一个步骤,时刻练习如何写出好的函数
  • 第四章:正文

    • 重点

      • 写出好代码才是要害,先写出好简洁代码,再思考写好正文
      • 最好的状态是代码自身就能诠释正文
      • 致力写出简略易懂的好正文
      • 好正文不仅能够让阅读者了解,还能够让阅读者学到新常识
    • 简介

      • 写一个正文容易,然而写好一个正文不容用。
      • 程序员因为各种“借口”懒得写正文
      • 如果你的代码足够具备表达力,就不须要正文,否则请加上你的正文
  • 第七章:异样解决

    • 重点

      • 异样解决的一些技巧

        • 用独自的办法进行 try/catch
        • 从大的异样到细化异样
      • 不要返回 Null 值
      • 异样须要作为繁多职责对待,而不是和办法捆绑
    • 简介
  • 第九章:单元测试

    • 重点

      • 测试单元:一个测试一个断言,测试单元尽可能简短
      • FIRST 准则

        • F:疾速

          • 测试能够疾速进行
        • I:独立

          • 测试之间互相独立
        • R:可反复

          • 测试在任何环境都能够通过
        • S:自足验证

          • 存在布尔值输入,能够验证本人的后果
        • T:及时

          • 测试要及时进行编写
    • 简介

      • 学习应用 TDD 测试驱动开发的模式
      • 单元测试是十分重要并且必要的

        • 测试的益处
        • 整洁的测试
      • TDD 的三大定律

        • 编写不能通过的测试代码之前,不编写生产代码
        • 只编写刚好无奈通过的单元测试
        • 只编写刚好足以通过测试的生产代码
  • 第十章:类

    • 重点

      • 大量的大类并不一定比大量小类好治理
      • 用尽可能少的类和办法实现目标
      • 类不应该有太多的权责和烦扰
    • 简介

      • 要害内容在于类的权责拆分

        • 当失去内聚的时候就想方法拆分
        • 生存形象:你是要一个装任何货色的百宝箱还是一个布满各种放个的工具箱
  • 第十七章:滋味和启发 #重点

    • 重点

      • 总结全书的一些要点
      • 回顾全书的重点内容
    • 简介

      • 十分重要的一个章节,用一个章节概括了全书的一些重要内容
      • 能够从最初一章确定全书要浏览的局部

作者的核心思想:

从头到尾认真仔细浏览下来,做了很多的笔记,上面就集体了解说一下作者的几个 核心思想

  • 繁多职责:不论编写简略还是简单的代码,都须要关注权责的拆分。
  • 简洁:要想尽一切办法致力优化本人的代码,养成一个良好的编程习惯。
  • 迭进:作者通过大量的案例和代码表白对于代码是如何一步步进行迭代改良的,要一直的思考和改进
  • 正文:好正文真的十分十分重要,尽管正文这一章其实更像是作者的吐槽和抱怨
  • 批评精力:不在乎程度的高下,敢于去重构代码,并且检查和思考
  • 重构:看似每一个无关紧要的细节的改变对于零碎构建产生的魔力变动

序章

序章能够明确作者写这本书的用意,作者激励读者对于代码提出挑战,并提出了如下的观点:

  • 神在 细节 之中
  • 5S 哲学

    • 整顿:命名标准
    • 整顿:每段代码在期待的中央
    • 分明:正文和解决利用 diamante
    • 清洁:组织构造清晰
    • 身美:乐于改良

首章要有代码

作者在第一章不是上来就介绍如何编写好代码或者一些技巧,而是探讨提倡的 AI 编程(其实很早就有这个概念了)以及编写代码的重要性,上面记录书中提出的对于编写代码的一些态度,集体了解是作者对代码存在极致的谋求,所以结尾便激励读者要写出 整洁 的代码:

  • 代码永存,必须要要有代码
  • 勒布朗法令:稍后等于永远不做
  • 不要把烂代码归咎为外因
  • 好代码的前提

    • 果决敢绝,就事论事,没有犹豫和无用细节
    • 表面或者举止令人愉悦,柔美与雅致

滋味和启发

集体倡议工夫比拟紧迫或者想要简略理解全书大抵内容的,间接去浏览最初一个章节“滋味与启发”,本局部内容间接介绍了全书的一些核心理念,相当如作者给你做了一次总结,十分良心。倡议重点浏览本章节的内容,外面用了十分多的小点介绍了一些平时编写简洁代码的倡议。

附录局部内容:附录的内容比拟容易被疏忽,尽管是对于并发模块和测试检测异样做了一个入门的介绍。这部分作者讲了集体亲身经历调优并发代码的故事比拟有意思。

附录局部摘录

这里记录附录局部对于如何 计算线程的门路数量 笔记

如何计算门路数量:

假如有 N 个指令和 T 个线程,将会产生 T * N 个步骤

假如有步骤 AB 和线程 12,将会有如下的状况:

1122、1212、1221、2112、2211、2121

他们的特色是:每个 T 会呈现 N 次,因为不论程序如何执行,执行必定会被执行实现

这样就引出一个公式:

(N*T)! / N!^T(! 为阶乘操作)

举例:对于有 2 个步骤和 2 个线程的代码,带入公式可得:(2*2)! / (2!)^2 = 24 / 4 = 6

将会呈现 6 种状况

那么这时候就会有疑难了,咱们 synchronized 到底扭转了什么?

咱们依照下面的假如,有 2 个线程得进去的后果是 N! 就是 指令的阶乘变为常数2

集体感悟:

​ 对于集体来说这本书物超所值,干货满满的一本书,不是单纯的讲空话,而是针对代理的代码案例进行 吐槽,特地是正文这一个章节,以前喜爱写很多的正文惟恐共事看不懂过去询问(当然牵扯业务问题很乐意与共事探讨),然而看完书感觉以前做的事件有些多余。集体在工作之后,逐步养成了编写文档的习惯,不论需要大小,总是喜爱写一写文字记录一下需要以及本人的思路轮廓,实际下来发现还是挺有用的,尽管预先会感觉文档写的很啰嗦或者有时候会遗记写过文档 =-=,而且有些可能还不算非常精确,然而对于本人回顾业务和需要的确有肯定的帮忙。总之,十分庆幸本人保持下来读完整本书。

上面是集体的一些感悟,同时如果不想看书,能够参考上面列出集体比拟倡议的点:

  • 边看边思考,边看边实际。实际最重要
  • 代码不是一步到位的,代码永远都没有最优解,依据本人的能力要一直摸索更优解。刻意练习
  • 不想看书的一些倡议点

    • 繁多职责

      • 代码是否真的只做了一件事,是否在本人骗本人
      • 验证是否只做一件事的万金油法令:加需要
      • 办法是否是“全包干”
    • 不要反复本人

      • “CV” 编程会让程度停留在 ”CV”
      • 古代的编辑器能够缩小很多思考
    • 什么是简洁

      • 没有正文,读代码就像在读业务逻辑
      • 没有过期的正文,也没用谬误的正文,更没有没用的正文
      • 用起码的代码做最大的事件,代码复用度高
      • 没有反复,繁多职责
    • 迭进

      • 学会拆分职责和剥离职责
  • 思考何为面向对象

    • 一直的改良,写出更简洁的代码
  • 批评:一直接受批评,能力不断进步

上面是集体想到的一些日常生活中碰到的 参考案例 以及一些小思考,读者能够写下本人碰到或者遇到的编程习惯进行批评:

  • 在做需要之前,写一份需要文档的草稿。不要求非常的准确,然而要简略的阐明改变的理由

    • 介绍需要
    • 思路
    • 解决步骤 1、2、3
  • 喜爱一行代码一行正文,在保障实现工作的前提下补齐集体的正文代码

    • 写代码不是写文章,不须要八面玲珑
    • 大量的正文容易湮没代码自身的价值
  • 容易编写许多参数的办法,并且通常容易漠视

    • 该需要喜爱喜 +1,这周状况不妙
  • 不盲目的写出很多无用正文,和书中的自言自语雷同
  • 改过喜爱写很多正文的习惯
  • 改过喜爱 CV 代码的习惯
  • 多想想本人写的代码是否合乎设计规定,是否是在重复劳动
  • 让办法和参数的命名更加的符合规范
  • 复查代码,留神代码的格局和行数
  • 思考设计模式思维是否在代码层面利用。
  • 缩小参数名,多留神办法的取名
  • 偷懒是烂代码的实质起因

书本总结:

​ 这本书更多的还是倡议将书中的观点带入到理论的代码当中,会有比拟好的成果,因为作者提出的很多问题的确从本人的代码当中不言而喻(冗余的正文,累赘的办法等等)

​ 先说说这本书的长处,尽管年代可能比拟长远,而且某些思维可能不是十分合乎古代的开发思维,然而仍然能够看到很多值得借鉴的中央,比方要时刻留神细节,并且要敢于突破本人的代码思考新的方向,集体从书中查漏补缺,检查了一下本人须要改过的一些编程思路,对于晋升集体的编程程度的确是有理论作用的。

​ 再说说毛病,首先是代码局部,集体认为局部案例代码来的比拟 突兀,同时因为很多代码不存在上下文的关联,尽管作者进行了解释然而仍然让读者摸不着头脑(当然也可能是集体理解能力问题),总之不是局部代码案例的确云里雾里。其次是书中蕴含的代码量较多,须要较长的工夫消化和排汇,比拟影响沉迷式的浏览体验。当然这本书更多的也是反对读者去本人实际。

​ 这本书集体比拟遗憾的是代码局部,因为书中作者从 12 章之后介绍如何迭进代码,退出应用理论的案例如何改写“烂”代码的,粗略看了下尽管能够了解作者想要尽力的告知读者一些优化思维,然而集体在网络上寻找很久仍然没有找到相干的源码,比拟遗憾。同时篇幅多大几页的代码以及没有上下文的代码在书本当中有些让人望而生畏。

作者在书中说倡议查看《字面编程》这本书 135 页对于权责拆分的良好案例,后续会花工夫去钻研一下

精句浏览:

只有通过批评,咱们能力学到货色。医生就是这样做的,飞行员就是这样做的,律师就是这样做的,咱们程序员也须要学习如何这样做。(书本的 252 页)

这里偷懒间接截图了 =-=

总结:

​ 更多的内容欢送查看思维导图,为了防止文章的内容过长,将更多的细节搁置到思维导图帮忙本人的思考和回顾。后续将会浏览《重构》这本书,尽管也是一本老书,然而看到很多人进行了举荐所以也买了一本翻翻看。这本书也花了很多的心理编写读书笔记,心愿读者给予倡议。

正文完
 0