乐趣区

关于前端:重构-JavaScript读后感和部分摘录

当初读动物书,有一种崇拜的感觉

前言

整体来说,《重构 JavaScript》对从刚入门到有些许开发教训的人,都有受害的中央。

后面讲述了在 JavaScript 里重构是一个什么概念,你应该怎么抉择、学习和应用 JavaScript,以及讲测试对重构的重要性;两头讲述了重构的指标、要留神的构造和一些值得注意的点;最初提到了一些异步、模式和函数式编程的思路。

能够这样形容:有一个密室,给你一些物品,而后从上帝视角通知你物品的作用,以及你能够抉择或参考的路线,也包含你可能走过的谬误路线剖析,最初通知你如何走的更丑陋。

其中比拟有感触的中央就是:要置信你的代码,不要胆怯测试,遵循一些特定的标准和模式,就能够把你的代码重构上来,如果违心再学习一些新的思路,你的代码会更丑陋,你的我的项目会更强壮,你的技术(包含思维)会有质的飞跃。

介绍

下图是一张图书简介(取自某个在线商城):

摘录

以下是文章里的一些摘录,个人感觉有很多值得学习和思考的中央,当然其中也有集体了解的成分。(局部专业术语没有做具体的介绍,因为太多了 ……)

第 1 章:重构是什么?

  • 当咱们进行测试时,咱们有 足够的信念 重构代码并扭转实现。如果没有这些测试,咱们就是把咱们真正关怀的行为(输出和输入)置于危险之中。
  • 性能(和其余非功能性方面)是咱们决定围绕它创立冀望和测试的主要问题。
  • 在过来的 20 年里,一个风行的比喻是 技术债
  • 高质量的代码个别都有以下准则:

    • SOLID:繁多职责准则,开闭准则,里氏替换准则,接口隔离准则,依赖反转准则。
    • DRY:不做反复的事。
    • KISS:放弃简略间接。
    • GRASP:通用职责调配软件模式。
    • YAGNI:你不会须要它。
  • 将人的可读性视为品质
  • 重构即摸索

第 2 章:你应用哪种 JavaScript?

  • 我应该应用哪个框架?

    这是 JavaScript 开发者常常提出的一个问题,而且可能是来自新开发人员最大的 问题,“我应该学习哪种语言?”框架限定的工作形式能够给程序员一种他们 真的晓得所有的感觉。用夸大甚至矛盾的要求来形容工作没有什么用。当波及 JavaScript 时有很多框架、平台和最终不同类型的代码,你可能都会写到,这个 问题的某些模式会一次又一次地呈现。

    最初,你不可能学会所有 。如果你有一个工作或指标工作真正须要某些技能,首 先花工夫在那些事下面。如果你心中没有一份特地的工作, 去团聚找敌人和导师 并跟着他们做 。或者,如果你只想学习你感兴趣的货色, 抉择一些看起来很酷的 货色 ,而后 深刻进去,继续前进,在某个时候,考愿娴熟把握这些技术。

    你能够在语言、框架、测试库或乐器上利用雷同的过程(依照工作要求、敌人在 应用的和你认为酷的进行过滤)。在所有这些中,偶然深刻,如果你原谅一些粗 鲁的倡议,请留神哪里钱多

    “看起来很酷”可能听起来很含糊,的确如此。对我来说,这意味着要找到最新 奇或者最令人费解的技术。我不太可能学习 14 种解决雷同问题的变体。对一些 人来说,酷意味着新和时尚。对其他人来说,它意味着受欢迎或有利可图。如果 你不晓得“看起来很酷”对你来说意味着什么,那就用一些可能性来解决这个问 题,而不是花太多工夫思考抉择哪一个

  • 框架 这个术语被看得过重了。

第 3 章:测试

  • 对于最初一个援用。

    测试不是个问题。这种景象暗示了 这是一个不足领导力的小型或缺乏经验团队

    可怜的是,如果你在一个都是鲁莽的人的团队中(这些程序员只是堆砌代码,而不器重品质和测试),最可能的后果是挫败感和不可预测的毁坏(以及不可预知的工夫)。

    “立刻来到这个不好的团队”不是惟一的答案,因为在这种状况下可能还有其余的益处和限度。然而 一些注重质量的我的项目往往有更好的稳定性(更少的颠覆重来),更好的薪酬和更多学习的机会。

    失常的老板或客户不会回绝任何对软件是否失常工作的验证。

  • 就像伊索寓言里的狐狸一样,没有抓到葡萄的时候,就说它们肯定是酸的。如果保障软件品质的测试是很难的,那就肯定是不重要的,对吗?这可能对让你面对人生中你无法控制的遗憾和悲观是有帮忙的 ,但如果没有意识到测试的益处,你就无奈以一个齐全不同的形式来写代码。 葡萄不是酸的,不要像那只狐狸一样,你是能够找到一个梯子实现的。
  • 测试的次要目标是对代码有信念。 这种信念不是凭空产生的。它是由看到谬误和抵制变动的代码而产生的狐疑中造成的。信念是测试什么和如何测试的最佳指标。理解测试的最大起因是帮忙你在查看代码库时建设自信和狐疑感。
  • 每个测试方法都有三个阶段:设置、断言和回收。

第 4 章:测试实际

  • 在 TDD(测试驱动开发)中,能够应用 红色 / 绿色 / 重构 周期来测试代码,换句话说:“测试失败,测试胜利,优化之”。
  • 在任何状况下,请放弃 git commit 命令之间的步骤很小,以便你能够很容易回滚到洁净的版本。

第 5 章:根本重构指标

  • 相比只返回 undefined,返回 this 将提供更多的信息和更好的接口。
  • 现实状况下,副作用 越少越好,如果必须存在,应该尽可能做到隔离。
  • IIFEs 没有名字,也不能被寻址。
  • 类有更多的个性,这些个性形成了独特的结构,而不仅仅是构造函数的“语法糖”。
  • JavaScript 在 OOP 上翻了一番,函数式编程可能是 JavaScript 的“将来”,但至多 OOP 也是将来。
  • 尽量减少块(复杂度和代码行数)。
  • 尽量减少输出的总数。
  • 多应用显示输出。
  • 相比副作用,多应用实在有意义的返回值。
  • 将副作用升高到最小甚至不存在。

第 6 章:重构根本构造

  • 重命名 可能是件小事。
  • 正文 有时候能够用作文档,甚至能够建设内部文档。
  • “提取”是一种特定类型的“引入”,有时候它比函数更适合。
  • 要留神 变量晋升
  • “for in”有点像咱们的 for 和 while 循环,然而咱们没有解决索引更新,所以你能够把它看成“for 索引 in”。

    • for…in 中的索引不保障按程序。
    • 任何可枚举的属性都将被枚举,数组能够从其余中央继承“enumerable”属性。
    • 在 for…in 循环中批改数组可能会导致混同。

第 7 章:重构函数与对象

  • 映射(Map)是为了实现更轻量级的“键和值”。
  • WeakSetWeakMap 与它们的“强”版本的次要区别是:

    • 它们不能被迭代(没有 forEach 函数)。
    • 它们没有获取容器大小的援用。
    • WeakSet 不能存储根本类型数据。
    • 他们很“弱”地治理它们的键。也就是说,当键没有任何援用的时候能够被垃圾回收。
  • 应用“弱”模式时,你放弃了容易理解外部是什么或将函数利用到整个汇合的能力。而你失去的是对内存透露和隐衷的管制。
  • 倡议将 if 中多个布尔值的判断放到一个函数的返回值中。
  • 尽量放大全局变量的作用域,最好能够设计咱们的 API。

第 8 章:层次结构中的重构

  • 要构建好逻辑的层次结构,尽量隔离。
  • 构造函数常常会在原型上搞事件,所以不要它不是很好用,能够应用对象字面量和工厂函数来代替。
  • 思考好 Is-AIs-Just-A

第 9 章:重构到面向对象模式

  • 状态模式 的外围是违心将可能被认为是“属于”某个对象的局部挪动到另一个对象中。OOP(面向对象编程)中有一种偏向,行将层次结构放在委托对象的优先级之上。
  • 装璜器 次要体现在将个性增加到现有的接口(实例)中。
  • 外观(对象字面量的形式来定义)看起来很简洁,害处是不容易保护。

第 10 章:重构异步

  • 将“回调天堂”变成 流式 API,这种格调叫 CPS(连续传递格调)。
  • Promise 的价值在于它们扭转了接口,而这些可能就是你心愿进行测试的中央。

第 11 章:函数式重构

  • 在 FP(申明式编程)中,咱们应该试图去强调,形容一个程序应该做什么,而不是应该怎么做。
  • 纯函数的益处是幂等性,也就是作用域够小并且不能扭转时,你能够总是置信同样的参数进去,返回的后果是一样的。另一个益处就是不产生副作用。
  • 柯里化、函数组合是个好想法。

心愿大家都能够成为心目中的大佬!

退出移动版