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

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 Recommended
var book = new Object();
book.title = "Maintainable JavaScript";
book.author = "Nicholas C. Zakas";

数组直接量

// Good
var colors = ["red", "blue", "white"];
var numbers = [1, 2, 3, 4];

// Bad
var colors = new Array("red", "blue", "white");
var numbers = new Array(1, 2, 3, 4);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值