《编写可维护的JavaScript》读书笔记——1.基本的格式化

《编写可维护的JavaScript》读书笔记——1.基本的格式化

缩进层级
使用制表符进行缩进,每一个缩进层级都用单独的制表符(tab character)表示。一个缩进层级是一个制表符,两个缩进层级是两个制表符,以此类推。

语句结尾
每个语句的结尾都不要省略分号。

行的长度
行的长度建议不要超过80个字符。

换行
一行长度超过最大字符数(80个字符)就要手动拆成两行。通常在运算符后换行,下一行会增加两个层级的缩进。在给变量赋值时,第二行的位置应当和赋值运算符的位置保持对齐。

// 好的做法:在运算符后换行,第二行追加两个缩进
callAFunction(document, element, window, "some string value", 
        true, 123, navigator);
// 变量赋值的情况
var result = something + anotherthing + yetAnotherthing + 
             somethingElse + anotherSomethingElse;

空行
使用空行确保语义有关联的代码展现在一起。通常在以下情况下使用空行:
1. 每个控制流程语句之前(比如 if 和 for 语句)
2. 在方法中间
3. 在方法中的局部变量(local variable)和第一条语句之间
4. 在多行或单行注释之前
5. 在方法内的逻辑片段内插入空行,提高可读性

命名
驼峰式大小写命名法(Camel Case):由小写字母开始的,后面每个单词首字母都大写。

var thisIsMyName;
var anotherVariable;
var aVeryLongVariableName;

命名——变量和函数
变量和函数名称应总是遵循驼峰大小写命名法,变量的命名前缀应当是名词,函数名前缀应当是动词。命名长度应尽量短而抓住重点,避免无意义的命名。
变量名注意体现值的数据类型,如 count、length、size表明数据类型是数字。
函数和方法命名,第一个单词应该是动词,下面是一些常见动词约定:

动词含义
can函数返回一个布尔值
has函数返回一个布尔值
is函数返回一个布尔值
get函数返回一个非布尔值
set函数用来保存一个值
// 变量名
var count = 10;
var myName = "Nicholas";
var found = true;

// 函数名
function getName() {
    return myName;
}

命名——常量
使用大写字母和下划线来命名常量,JavaScript并不区分变量和常量,帮助区分变量和常量。

var MAX_COUNT = 10;
var URL = "www.baidu.com";

命名——构造函数
用大写字母开始的驼峰大小写命名法命名。JavaScript中构造函数是前面冠以new运算符的函数,用来创建对象。

function Person(name){
    this.name = name;
}
var me = new Person("Nicholas");

直接量
字符串
用双引号括起来,多行字符串时使用加号连接符连接。

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

数字
在JavaScript中,所有的数字形式都存储为相同的数据类型——浮点型。禁止使用八进制,容易产生错误和歧义。

// 整数
var count = 10;

// 小数
var price = 10.0;
var price = 10.00;

// 十六进制写法
var num = 0xA2;

// 科学计数法
var num = 1e23;

null
null一般用于作为对象的替代品,适用于以下场景:
- 用来初始化一个变量,这个变量可能赋值为一个对象
- 用来和一个已经初始化的变量比较,这个变量可以是也可以不是一个对象
- 当函数的参数期望是对象时,作为参数传入
- 当函数的返回值期望是对象时,作为返回值传出
不适用场景:
- 检测是否传入了某个参数
- 检测一个未初始化变量
undefined
在代码中避免使用undefined,一个可能会被赋值的变量应赋值为null。typeof 运算符才可以区分是未声明的变量还是已经声明的变量

// foo未声明
var person = null; // 较好的写法
var num; // 不好的写法
console.log(person === null); // 结果是true
console.log(typeof person);  // "object"
console.log(typeof foo);   // "undefined"
console.log(typeof num);   // "undefined"不能区分是否未声明

对象直接量
创建对象使用对象直接量。

// 不好写法,先创建实例再添加属性
var book = new Object();
book.title = "Maintanable JavaScript";
book.author = "Nicholas C. Zakas";

// 好的写法,使用对象直接量
var book = {
    title: "Maintanable JavaScript",
    author: "Nicholas C. Zakas"
}

数组直接量

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

// 好的写法
var color = ["red", "blue", "green"];
var numbers = [1, 2, 3, 4];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值