JavaScript编写可维护的代码。

来源:互联网 发布:php开源库存管理系统 编辑:程序博客网 时间:2024/05/16 18:09

基本的格式化

缩进层级

4个空格缩进,最好统一tab为4个字符。

语句结尾

结尾分号

产生错误的例子

//原始代码function getData() {    return     {        title:"Maintainable JavaScript",        author:"Nicholas C. Zakas"    }//分析器会它理解function getData() {    return;    {        title:"Maintainable JavaScript",        author:"Nicholas C. Zakas"    };}

可以通过将左花括号移至与return同一行的位置来修复这个问题。

//这段代码工作正常,尽管没有用分号function getData() {    return {        title:"Maintainable JavaScript",        author:"Nicholas C. Zakas    }}

行的长度

80个字符
换行
通常我们会在运算符后换行,下一行会增加两个层级的缩进(8个字符)

例外:当给变量赋值时,第二行的位置应当和赋值运算符的位置保持对齐,例如

var result = something + antherThing + yetAnotherThing + somethingElse +              anotherSomethingElse;

空行

  • 在方法之间
  • 在方法的局部和语句之间
  • 在多行或单行注释之前
  • 在方法内的逻辑片段之间插入空行,提高可读性

命名

驼峰命名法

 驼峰式大小写命名是由小写字母开始的,后续每个单词首字母都大写。

变量和函数

 变量名应当总是遵循驼峰小大写命名法,并且前缀是名词。以名词作为前缀可以让变量和函数区分开来,因为函数名前缀应当是动词。
//好的写法var count = 10;var myName = "Nicholas";var found = true;//不好的写法:变量像函数var getCount = 10;var isFound = true;//好的写法function getName() {    return myName;}//不好的写法:函数看起来像变量function theName() {    return myName;}

动词常见的约定

动词 含义 can 函数返回一个布尔值 has 函数返回一个布尔值 is 函数返回一个布尔值 get 函数返回一个非布尔值 set 函数用来保存一个值

常量

在ECMAScript6,JavaScript中并没有真正的常量的概念。然而,为了区分普通的变量和常量,它使用大写字母和下划线来命名。

构造函数

在JavaScript中,构造函数只不过是前面冠以new运算符的函数,用来创建对象。语言本身已经包含了很多内置构造函数,比如Object和RegExp,同样开发者也可以创建自己的构造函数来生成新类型。

//好的做法function Person() {    this.name = name;}Person.prototype.sayName = function() {    console.log(this.name);}var me = new Person("Nicholas");    

直接量

字符串

//合法的JavaScript代码var name = "Nicholas says,\"Hi.\"";//也是合法JavaScript代码var name = 'Nicholas says."Hi"';

在这段代码中,在使用双引号括起来的字符串里需要对双引号进行转义,而在使用单引号括起来的字符串
里则不必如此。

null

null是一个特殊值,但我们常常误解它,将它和undefined搞混。在下列场景中应当使用null。

  • 用来初始化一个变量,这个变量可能赋值为一个对象。
  • 用来和一个已经初始化的变量比较,这个变量可以是也可以不是一个对象。
  • 当函数的参数期望是对象时,用作参数传入。
  • 当函数的返回值期望是对象时,用作返回值传出。

还有下面一些场景不应当使用null
- 不要使用null是否传入了某个参数。
- 不要用null来检测一个未初始化的变量。

示例代码

//好的用法var person = null;//好的用法function getPerson() {    if (condition) {        return new Person("Nicholas");    } else {        return null;    }}//好的用法var person = getPerson();if (person !== null) {    doSomething();}//不好的写法:用来和未初始化的变量比较var person;if (person != null) {    doSomething();}//不好的写法:检测是否传入了参数function doSomething(arg1,arg2,arg3,arg4) {    if (arg4 != null) {        doSomethingElse();    }}

理解null最好的方式是将它当作对象的占位符。这个规则在所有的主流编程规范中都没有提及,但对于全局可维护性来说至关重要。

对象直接量

创建最流行的一种做法是使用对象直接量,在直接量上中直接写出所有属性,这种方式可以取代先显示地创建Object的实例然后添加属性的这种做法。

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

数组直接量

和对象直接量类似,数组直接量是JavaScript中定义数组最简洁的一种方式。

//不好的写法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];
阅读全文
0 0
原创粉丝点击