《编写可维护的JavaScript 》读书笔记(1) --基本的格式化

来源:互联网 发布:淘宝店护肤品卖什么好 编辑:程序博客网 时间:2024/05/22 14:36

Programs are meant to be read by humans and only incidentally for computers to execute.

程序是写给人读的,只是偶尔让计算机执行一下。

编程风格(style guideline): 规约单文件中代码的规划

编码规范(code convention): 编程最佳实践,文件和目录的规划以及注释

换行

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

// 推荐: 在运算符后换行(这里是逗号),第二行增加两个缩进(2个Tab制表符)callAFunction(document, element, "some string value", true, 123,        navigator;)

语句换行也可以运用这个规则:

if (isLeapYear && isFebruary && day == 29 && itsYourBirthday &&        noPlans) {    waitAnotherFourYears();         }// if的主体部分依然是一个缩进

变量换行

var result = something + anotherThing + yetAnotherThing +            anotherSomethingElse;// 当给变量赋值时,第二行的位置应当和赋值运算符的位置保持对齐

空行

用空行分隔代码,确保语义有关联的代码展现在一起,

  • 在方法之间;
  • 在方法的局部变量和第一条语句之间;
  • 在多行或单行注释之前;
  • 在方法的逻辑片段之间插入空行,提高可读性。
if (wl && wl.length) {  for (i = 0, l = wl.length; i < 1; ++i) {    p = wl[i];    type = Y.Lang.type(r[p]);    if (s.hasOwnProperty(p) {        if (merge && type == 'object') {          Y.mix(r[p], s[p]);        } else if (ov || !(p in r)) {          r[p] = s[p];        }    }  }}

变量和函数

命名不仅是一门科学,也是一门技术。遵循小驼峰命名法,命名提现数据类型;例如命名count, length和size 表明数据类型是数字,而命名name, title 和message表明数据类型是字符串;函数名前缀应该是动词

动词 含义 can 函数返回一个布尔值 has 函数返回一个布尔值 is 函数返回一个布尔值 get 函数返回一个f非布尔值 set 函数用来保存一个值
 if (isEnabled()) {   setName("nicholas"); } if (getName() === "Nicholas") {   doSomething(); }

常量

使用大写字母和下划线来命名,下划线用以分隔单词

var MAX_COUNT = 10;var URL = "http://www.nczonline.net/";

构造函数

构造函数的命名常常是名词,用来创建某个类型的实例,通常用大驼峰命名法,前面往往跟new连用。

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

字符串

字符串可以用双引号括起来,也可以使用单引号括起来。

区别:双引号里面的字符串需要对双引号进行转义,单引号里的字符串不需要转义。

// 合法的JavaScript代码var name = "Nicholoas says, \"Hi.\"";// 合法的JS代码var name = 'Nicholos says, "Hi"';// 多行字符串建议用"+"将字符串分成多份var longString = "Here's the story, of a man " +                "named Brady.";

对象直接量

创建对象时直接写出所有属性

// お薦めします,推荐的写法var book = {    title: "Maintainable JavaScript",    author: "Nicholas C. Zakas"};// not Recommendedvar book = new Object();book.title = "Maintainable JavaScript";book.author = "Nicholas C. Zakas";

数组直接量

// Goodvar colors = ["red", "blue", "white"];var numbers = [1, 2, 3, 4];// Badvar colors = new Array("red", "blue", "white");var numbers = new Array(1, 2, 3, 4);
阅读全文
1 0