《Maintainable JavaScript》读书笔记

CHAPTER 1 Basic Formatting

(1)Indentation Levels: 使用tab对代码进行缩进,以此来体现代码的结构和层次。

1     if( isMatch === true ) {
2         var matchedPerson = "zj" ;
3         for( var i = 0; i < 10; i ++ ) {
4             // do something
5         }
6     }

 

(2)Statement Termination: 在一行javascript语句的最后用分号结尾,以避免由于ASI(automatic semicolon insertion)机制的不确定的工作结果而导致的未知错误。

1     var isHandsome = true ;

 

(3)Line Length: 为了提高代码的可读性,应该将一行代码的长度保持在80个字符之内,超过80个字符的部分应该换到下一行。

(4)Line Breaking: 当一行代码超过80个字符时要通过换行将其划分成两行,换行应该在某个操作符之后进行,以避免ASI在换行处自动添加分号而导致的语法错误。同时换到下一行的代码应该要有两级缩进,以与可能有的子语句(例如if语句的子语句)区分开来。

1     if( isLeapYear && isFebruary && day === 29 && itsYourBirthday &&
2             noPlans ) {
3         waitAnotherFourYears() ;
4     }

 

(5)Blank Lines: 适当地添加空行以使得程序的结构看起来不至于过于紧凑而更加清晰,适合添加空行的场合有:在每个流程控制语句之前(例如if和for语句);在两个函数(方法)之间;在方法中声明局部变量的语句和第一条执行语句之间;在(单行或多行)注释代码之前;在函数内部不同业务逻辑的代码段之间。

 1     var f1 = function() {
 2         var zj, xu, xj;
 3         var persons = [];
 4 
 5         zj = "epson";
 6         xu = "scan";
 7         xj = "zoro";
 8         persons.push(zj);
 9         persons.push(xj);
10         persons.push(xu);
11 
12         for( var i = 1; i < 3; i ++ ) {
13             for( var j = 0; j < 3 - i; j ++ ) {
14                 if( persons[j] > persons[j+1] ) {
15                     var temp = persons[j] ;
16                     persons[j] = persons[j+1] ;
17                     persons[j+1] = temp ;
18                 }
19             }
20         }
21     };
22 
23     var f2 = function() {
24 
25     };

 

(6)Naming: javascript中一般使用小驼峰命名法,即以小写字母开头,名称中从第二个单词开始的每个独立单词首字母都采用大写,以划分标识符中的各个单词。变量(variable)的命名通常以名词开头,以与函数(function/method)的命名区分开来避免造成混淆,后者的命名则通常以动词开头;常量(constant)通常采用全部大写字母命名,并以下划线划分名称中的单词;构造函数采用大驼峰命名法,与小驼峰命名法的区别在于它以大写字母开头,以使构造函数从命名方式上与一般的函数区别开来。

 1      var numOfPersons = 10 ;                 //变量
 2      var getNumOfPersons = function() {      //函数
 3  
 4      };
 5      var MAX_COUNT = 3.14 ;                  //常量
 6      var Person = function() {               //构造函数
 7  
 8      };
 9  
10      var zj = new Person() ;

 

(7)Literal Values: 

Strings: 使用双引号来声明一个字符串变量,这是为了与其他语言的习惯保持一致(例如Java)。当字符串长度过长而需要划分为两行时,不要直接在字符串中换行,而是应该使用"+"操作符将分成两段的字符串连接起来。

1     //错误的做法
2     var text = "Here's the story, of a man
3              named Beady." ;
4 
5     //正确的做法
6     var text = "Here's the story, of a man " +
7             "named Beady." ;

 Numbers: 如果要声明浮点数型的变量,务必将小数点两端的数都写完整,不要在数的左侧或右侧留下一个小数点然后坐等着javascript帮你补上0。再有就是不要在一个数的前面加上多余的0,因为这样该数会被解释成八进制数,而且许多程序员对八进制数都不熟悉,容易造成各种误会。

 1     //Interger
 2     var count = 10 ;
 3 
 4     //Demical
 5     var price = 10.0 ;
 6     var price = 10.00 ;
 7 
 8     //Bad Demical: Hanging demical point
 9     var price = 10. ;
10 
11     //Bad Demical: Leading demical point
12     var price = .1 ;
13 
14     //Bad: Octal(base 8) is deprecated
15     var num = 010 ;
16 
17     //Hexadecimal(base 16)
18     var num = 0x42 ;
19 
20     //E-notation
21     var num = 1e23 ;

 

 

 

 

 

 

 

 

posted @ 2012-10-10 18:57  CyrilZhao  阅读(235)  评论(0编辑  收藏  举报