Skip to content

Latest commit

 

History

History
182 lines (122 loc) · 5.47 KB

基本的格式化.md

File metadata and controls

182 lines (122 loc) · 5.47 KB
title date tags
读书笔记:《编写可维护的JavaScript》--基本的格式化
2015-06-06 09:48:45 -0700
读书笔记

缩进层次

关于代码的缩进,有两种主张tab和空格。

制表符

一般来说,使用tab键比较方便,可以通过配置文件来进行配置,可长可短。

可是系统对制表符的解释不一致,在不同的系统中打开文件看到的不一样。

制表符(也叫制表位)的功能是在不使用表格的情况下在垂直方向按列对齐文本。比较常见的应用包括名单、简单列表等。也可以应用于制作页眉页脚等同一行有几个对齐位置的行。

空格

空格在所有的系统中和编译器中的展现都一样

可是对于单个开发者,使用一个没有配置好的文本编辑器创建格式化代码的方式十分原始。

在做项目的时候,带队的老师要求我们手打4个空格,说这样就可以最大的避免产生的代码缩进不一致的问题了。

语句结尾

虽然JavaScript在没有分号的情况下也会判定合法,但是推荐使用分号,对于我个人,肯定用分号啊

我发现很多开发人员,尤其是新手们,更倾向于使用分号而不是省略它们。

没错说的就是我这种新手@(*_*)@

换行

除了一行代码结束了要换行之外,行太长了也要换行啊。

当一行长度达到了单行最大字符数限制时,就需要手动将一行拆成两行。通常我们会在运算符后换行,下一行会增加两个层次的缩进。

下面就是正确的示范

callAFunction(document, element, window, "some string value", true, 123,
		navigator);

空行

通常来讲,代码看起来应当像一系列可读的段落,而不是一大段揉在一起的连续的文本。有时一段代码的语义和另一段代码不相关,这是就应该使用空行将他们分隔,确保语义有关联的代码展现在一起。

一般来说,在下面这些场景中添加空行是不错的主意。

  • 在方法之间。

  • 在方法中的局部变量(local variable)和第一条语句之间。

  • 在多行或单行注释之前。

  • 在方法内的逻辑片段之间插入空行,提高可读性。

命名

“计算机科学只存在两个难题:缓存失效和命名。”——Phil Karlton

  • Pascal Case 大驼峰式大小写

  • Camel Case 小驼峰式大小写

  • 匈牙利命名法

JavaScript语言的核心 ECMAScript,即是遵照了驼峰式大小写(Camel case)命名法。 它是由小写字母开始的,后续每个单词的首字母都大写。

至于具体的命名规范,确实有些复杂了,变量名前缀应该是名词,函数名前缀应当是动词,常量用大写字母和下划线来命名

  • 变量 var count = 10;

  • 函数 function getName() { return myName; }

  • 常量 MAX_COUNT = 10;

直接量

在JavaScript中包含一些类型的原始值:字符串、数字、布尔值、null和undefined。同样也包含对象直接量和数组直接量。

字符串

字符串双引号、单引号混合在一起使用要嵌套,如果不混合在一起的话,要进行转义。

var longString = "Here's a String 'abc'."

我们只需要关心,代码从头到尾只保持一种风格。

多行字符串的一种替换写法是,使用字符串连接符(+)将字符分成多份。

	var longString = "Here's the story, of a man " +
	                 "named Brady."

数字

在JavaScript中的数字类型只有一种,因为所有的数字形式——整数和浮点数——都存储为相同的数据类型。

null

在下列场景中应使用null

  • 用来初始化一个变量,这个变量可能赋值为一个对象。
var person = null;
  • 用来和一个已经初始化的变量比较,这个变量可以是也可以不是一个对象。

  • 当函数的参数期望是对象时,用作参数传入。

  • 当函数的返回值期望是对象时,用作返回值传出。

function getPerson() {
	if(condition) {
		return new Person("Nicholas");
	}
	else {
		return null;
	}
}

在下面的场景中不要使用null

  • 不用使用null来检测是否传入了某个参数。

  • 不要用null来检测一个未初始化的变量

//不好的用法:用来和未初始化的变量比较
var person = null;
if(person != null =) {
	dosomething();
}
//不好的用法:检测是否传入参数
function doSometing(arg1, arg2, arg3, arg4) {
	if(arg4 != null) {
		doSomethingElse();
	}
}

undefined

undefined 是个特殊值,我们常常将它和null搞混。其中一个让人颇感困惑之处在于null == undefined 结果是true。

那些没有被初始化的变量都有一个初始值,即undefined,表示这个变量等待被赋值。

对象直接量

创建对象最流行的一种方法是使用对象直接量,然后在直接量中直接写出所有属性。

	//不好的写法
	var book = new Object();
	book.tittle : "Maintainable JavaScript";
	book.author : "Nicholas C. Zakas";

	//好的写法
	var book = {
		tittle : "Maintainable JavaScript",
		author : "Nicholas C. Zakas"
	};

数组直接量

和对象直接量类似,数组直接量是JavaScript中定义数组最简洁的一种方式。不赞成显式的使用Array构造函数来创建数组。

	//不好的写法
	var colors = new Array("red", "green", "blue");
	var numbers = new Array(1, 2, 3, 4);

	//好的写法
	var colors = ["red", "green", "blue"];
	var numbers = [1, 2, 3, 4];