王焱燚Rex对《编写可维护的JavaScript》的笔记(12)

王焱燚Rex
王焱燚Rex (我喜欢你,没有任何原因!)

在读 编写可维护的JavaScript

编写可维护的JavaScript
  • 书名: 编写可维护的JavaScript
  • 作者: 扎卡斯
  • 页数: 226
  • 出版社: 人民邮电出版社
  • 出版年: 2013-4
  • 第1页
    我们会经常碰到这两个术语:“编程风格”(style guideline)和“编码规范”(code convention)。编程风格是编码规范的一种,用来规约单文件中代码的规划。编码规范还包含编程最佳实践、文件和目录的规划以及注释等方面。
    其实,对于一个团队来说,有一套较为完善的编码规则真的很有必要。这个行业的人员流动性还是很大的,往往一个项目还处在后期维护阶段,其最初的开发人员就已经不知道跳到哪里开始新的征程了。而对于接手这个项目的其他开发者来说,项目代码如果没有一个统一的风格,那真的是一件很痛苦的事。
    2018-06-13 22:12:21 回应
  • 基本的格式化
    1.缩进层级
    统一的缩进风格可以提高代码的易读性,提高理顺代码逻辑的效率。
    1.1 使用制表符进行缩进
    ·每一个缩进层级都用单独的制表符(tab character)表示
    ·优点:
    1)制表符和缩进层级之间是一对一的关系,符合逻辑
    2)文本编辑器可以配置制表符的展现长度(通常一个制表符长度相当于4个字符)
    ·缺点:不同系统对制表符的解释不一致
    1.2 使用空格符进行缩进
    ·每个缩进层级由多个空格字符组成(2/4/8个空格表示一个缩进)
    ·优点:在所有的系统和编辑器中,文件的展现格式不会有任何差异
    ·缺点:对于单个开发者来说,使用一个没有配置好的文本编辑器创建格式化的代码的方式非常原始
    我推荐使用4个空格字符为一个缩进层级。很多文本编辑器都默认将缩进设置为4个空格,你可以在编辑器中配置敲入Tab键时插入4个空格。使用2个空格的缩进时,代码的视觉展现并不是最优的,至少看起来是这样。 尽管是选择制表符还是选择空格做缩进只是一种个人偏好,但绝对不要将两者混用,这非常重要。这么做会导致文件的格式很糟糕,而且需要做不少清理工作。
    2018-06-13 22:24:35 回应
  • 基本的格式化
    2.语句结尾
    JavaScript的语句要么独占一行,要么以分号结尾。
    有赖于分析器的自动分号插入(Automatic Semicolon Insertion,ASI)机制,JavaScript代码省略分号也可以正常工作。但受限于ASI的分号插入规则非常复杂,ASI只是在大多数场景下不会产生错误,所以推荐不要省略分号。
    2018-06-14 13:31:00 回应
  • 基本的格式化
    3.行的长度
    一般将行长度限定在80个字符
    1)Java语言编程规范中规定源码里单行长度不超过80个字符,文档中代码单行长度不超过70个字符。 2)Android开发者编码风格指南规定单行代码长度不超过100个字符。 3)非官方的Ruby编程规范中规定单行代码长度不超过80个字符。 4)Python编程规范中规定单行代码长度不超过79个字符。
    2018-06-14 13:31:37 回应
  • 基本的格式化
    4.换行
    当一行长度达到了单行最大字符数限制时,需要手动将一行拆成两行。
    在运算符后换行,可以避免由于ASI机制自主插入分号产生的错误。
    换行后,下一行增加两个层级的缩进。当给变量赋值时,第二行的位置应当和赋值运算符的位置保持对齐。
    2018-06-14 13:41:48 回应
  • 基本的格式化
    5.空行
    应使用空行将语义不相关的两段代码分隔开,确保语义有关联的代码展现在一起,有助于提高代码的可读性。
    一般来讲,在下面这些场景中添加空行也是不错的主意。 ·在方法之间 ·在方法中的局部变量(local variable)和第一条语句之间 ·在多行或单行注释之前 ·在方法内的逻辑片段之间插入空行,提高可读性
    2018-06-14 14:08:23 回应
  • 基本的格式化
    6.命名
    JavaScript语言的核心ECMAScript,遵照的是驼峰式大小写(Camel Case)命名法(由小写字母开始的,后续每个单词首字母都大写)。
    Camel Case和Pascal Case都翻译成“驼峰式大小写”,但两者含义有所不同,Camel Case包括“小驼峰式”和“大驼峰式”,在本章中,Camel Case被作者用来特指“小驼峰式大小写”(即首字母小写)命名法,Pascal Case则特指“大驼峰式大小写”(即首字母大写)命名法
    6.1.变量和函数
    变量名和函数名应当遵守驼峰大小写命名法,其中变量名前缀应当是名词,而函数名前缀应该是动词。
    通常来说,命名长度应该尽可能短,并且避免使用没有意义的命名。
    尽量在变量名中体现出值的数据类型。比如,命名count、length和size表明数据类型是数字,而命名name、title和message表明数据类型是字符串。但用单个字符命名的变量诸如i、j和k通常在循环中使用。
    一些动词的常见约定:

    jQuery显然并没有遵循这种函数命名约定,一部分原因在于jQuery中方法的使用方式,很多方法同时用作getter和setter。
    6.2.常量
    常量命名约定:常量使用大写字母和下划线来命名,下划线用以分割单词。
    常量其实就是特殊的变量,所以这其实就是使用不同命名约定的变量而已。
    在ECMAScript 6 之前,JavaScript中并没有真正的常量的概念。
    6.3.构造函数
    构造函数的命名遵照大驼峰命名法,通常使用名次,因为构造函数是用来创建某个类型的实例的。
    遵守这种命名约定可以帮助我们快速定位问题,例如可以一眼发现声明实例时,忘记使用new运算符。
    7.直接量
    7.1.字符串
    字符串可以用双引号括起来,也可以用单引号括起来,而且使用单引号括起字符串和双引号括起字符串在功能上并无不同,只需要在内部出现字符串界定符时进行转义即可。
    7.2.数字
    在JavaScript中所有数字形式都存储为相同的数据类型,不过不建议在代码中使用八进制直接量赋值。
    7.3.null
    应当使用null的场景:
    ·用来初始化一个变量,这个变量可能赋值为一个对象
    ·用来和一个已经初始化的变量比较,这个变量可以是也可以不是一个对象
    ·当函数的参数期望是对象时,用作参数传入
    ·当函数的返回值期望是对象时,用作返回值传出
    不应当使用null的场景:
    ·不要使用null来检测是否传入了某个参数
    ·不要用null来检测一个未初始化的变量
    理解null最好的方式是将它当作对象的占位符。
    7.4.undefined
    null==undefined结果是true。
    没有被初始化的变量的默认初始值都是undefined,表示这个变量等待被赋值。
    不管是值是undefined的变量还是未声明的变量,typeof运算结果都是“undefined”。所以通过禁止使用特殊值undefined可以有效的确保只在一种情况下typeof才会返回“undefined”:当变量未声明时。
    将变量初始值赋值为null表明了这个变量的意图,它最终很可能赋值为对象。typeof运算符运算null的类型时返回“object”,这样就可以和undefined区分开了。
    7.5.对象直接量
    创建对象最流行的一种做法是使用对象直接量,在直接量中直接写出所有属性。
    当定义对象直接量时,通常在第一行包含左花括号,每一个属性的赋值都独占一行,并保持一个缩进,最后右花括号独占一行。
    7.6.数组直接量
    数组直接量时JavaScript中定义数组最简洁的一种方式,使用两个方括号将数组初始元素括起来。
    2018-09-17 14:17:02 回应
  • 基本的格式化
    7.直接量
    7.1.字符串
    字符串可以用双引号括起来,也可以用单引号括起来,而且使用单引号括起字符串和双引号括起字符串在功能上并无不同,只需要在内部出现字符串界定符时进行转义即可。
    7.2.数字
    在JavaScript中所有数字形式都存储为相同的数据类型,不过不建议在代码中使用八进制直接量赋值。
    7.3.null
    应当使用null的场景:
    ·用来初始化一个变量,这个变量可能赋值为一个对象
    ·用来和一个已经初始化的变量比较,这个变量可以是也可以不是一个对象
    ·当函数的参数期望是对象时,用作参数传入
    ·当函数的返回值期望是对象时,用作返回值传出
    不应当使用null的场景:
    ·不要使用null来检测是否传入了某个参数
    ·不要用null来检测一个未初始化的变量
    理解null最好的方式是将它当作对象的占位符。
    7.4.undefined
    null==undefined结果是true。
    没有被初始化的变量的默认初始值都是undefined,表示这个变量等待被赋值。
    不管是值是undefined的变量还是未声明的变量,typeof运算结果都是“undefined”。所以通过禁止使用特殊值undefined可以有效的确保只在一种情况下typeof才会返回“undefined”:当变量未声明时。
    将变量初始值赋值为null表明了这个变量的意图,它最终很可能赋值为对象。typeof运算符运算null的类型时返回“object”,这样就可以和undefined区分开了。
    7.5.对象直接量
    创建对象最流行的一种做法是使用对象直接量,在直接量中直接写出所有属性。
    当定义对象直接量时,通常在第一行包含左花括号,每一个属性的赋值都独占一行,并保持一个缩进,最后右花括号独占一行。
    7.6.数组直接量
    数组直接量时JavaScript中定义数组最简洁的一种方式,使用两个方括号将数组初始元素括起来。
    2018-09-02 23:05:47 回应
  • 注释
    1.单行注释
    单行注释以两个斜线开始,以行尾结束。
    使用方法:
    ·独占一行的注释,用来解释下一行代码:这行注释之前总是有一个空行,且缩进层级和下一行代码保持一致
    ·在代码行的尾部的注释:代码结束到注释之间至少有一个缩进,如果该行代码加注释超过单行最大字符数限制,应将这条注释放置于当前代码行的上方
    ·被注释掉的大段代码,除此之外单行注释不应以连续多行注释的形式出现
    2018-09-03 21:55:03 回应
  • 注释
    2.多行注释
    多行注释可以包裹跨行文本,以/*开始,以*/结束。
    Java风格的注释至少包含三行:第一行是/*,第二行是以*开始且和上一行的*保持左对齐,最后一行是*/。
    多行注释总是会出现在将要描述的代码段之前,注释和代码之间没有空行,而多行注释之前应当有一个空行,且缩进层级和其描述的代码保持一致。
    2018-09-03 22:01:42 回应
<前页 1 2 后页>

王焱燚Rex的其他笔记  · · · · · ·  ( 全部13条 )