《编写可维护的javascript》读书笔记


《编写可维护的javascript》的个人学习读书笔记
边学边更新ing

C1 编程风格

两个非常有用的检查编码风格的工具:JSLint和JSHint

1 基本的格式化

1.1 缩进层级

1.2 语句结尾

1.3 行的长度

1.4 换行
变量赋值时,第二行的位置要与赋值符号的位置保持对齐。

1.5 空行

1.6 命名

  • 两种命名方法:
    a. 峰式大小写(最常见),由小写字母开始的, 后续每个单词首字母都大写,如thisCurrentVariable。
    b. 匈牙利命名法( 不推荐),名字之前冠以类型标识符前缀,如sName。

1.6.1 变量和函数
变量名应当总是遵守驼峰大小写命名法, 并且命名前缀应当是名词。 以名词作为前缀可以让变量和函数区分开来, 因为函数名前缀应当是动词。
命名长度应该尽可能短, 并抓住要点。 尽量在变量名中体现出值的数据类型。 避免使用没有意义的命名。
对于函数和方法命名来说, 第一个单词应该是动词, 推荐使用动词作为函数名前缀。

1.6.2 常量
常量的命名使用一种通用的命名约定。 这个约定源自于C语言, 它使用大写字母和下划线来命名, 下划线用以分隔单词,如MAX_COUNT。

1.6.3 构造函数
遵照大驼峰命名法。

1.7 直接量
JavaScript中包含一些类型的原始值: 字符串、 数字、 布尔值、 null和undefined,也包含对象直接量和数组直接量。只有布尔值时自解释的,其他的类型都涉及到如何精确表示。

1.7.1 字符串
在JavaScript中, 字符串是独一无二的。 字符串可以用双引号括起来, 也可以用单引号括起来。使用单引号或者双引号括起来字符串在功能上相同,我们关心的是,代码应当从头到尾只保持一种风格。
创建多行字符串时可以使用字符串连接符(+)连接。ES6中也可以使用模板字符串来实现,模板字符串使用反引号 `` 来代替普通字符串中的用双引号和单引号。

1.7.2 数字
在JavaScript中的数字类型只有一种, 因为所有数字形式——整数和浮点数——都存储为相同的数据类型。
为了避免歧义, 请不要省略小数点之前或之后的数字。八进制数字写法会产生一些错误和歧义以及较少用到,最好的做法是在代码中禁止八进制直接量。

1.7.3 null
理解null最好的方式是将它当做对象的占位符。

  • 应该使用null的场景:
    a. 用来初始化一个变量, 这个变量可能赋值为一个对象
    b. 用来和一个已经初始化的变量比较, 这个变量可以是也可以不是一个对象
    c. 当函数的参数期望是对象时, 用作参数传入
    d. 当函数的返回值期望是对象时, 用作返回值传出

  • 不应当使用null的场景:
    a. 不要使用null来检测是否传入了某个参数
    b. 不要用null来检测一个未初始化的变量

1.7.4 undefined
那些没有被初始化的变量都有一个初始值, 即undefined,表示这个变量等待被赋值。
null和undefined都是一个特殊值, 但我们常常将二者搞混。
null == undefined结果是true;
typeof对于不管值是undefined的变量还是未声明的变量,typeof运算结果都是“undefined”。
以上两个情况是null和undefined常让人迷惑的点,但是null和undefined有不同的用途。
比较好的做法是,声明一个对象时将其赋值为null,typeof运算符运算null的类型时返回“object”, 这样就可以和undefined区分开了。

1.7.5 对象直接量
推荐:使用对象直接量, 在直接量中直接写出所有属性。
不赞成:先显式地创建Object的实例然后添加属性的这种做法。

1.7.6 数组直接量
推荐:使用两个方括号括起数组的初始元素来构造数组。
不赞成:显式使用Array构造函数来创建数组。

2 注释

3 语言和表达式

4 变量、函数和运算符

C2 编程实践

5 UI层的松耦合

6 避免使用全局变量

7 典型用法

8 避免“空比较”

9 将配置数据从代码中分离出来

10 抛出自定义错误

11 不是你的对象不要动

12 浏览器嗅探

C3 自动化

13 文件和目录结构

14 Ant

15 校验

16 文件合并和加工

17 文件精简和压缩

18 文档化

19 自动化测试

20 组装到一起

附录A JavaScript编码风格指南

附录B JavaScript工具集

我的附录 章节的学习进展

在这里标注是否精读、是否完成该章节的阅读学习

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 附录A
  • 附录B
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页