最近在看前端大牛Nicbolas C.Zakas的《编写可维护的JavaScript代码》一书。觉得里面的很多知识点都写的很好,所以,就写篇博文,总结一下吧!编码规范对于程序设计来说是很重要的,因为如果编码风格不一致的话,代码看上去就会很乱,是很难维护的。当然,不同的开发团队有着不同的编码规范,比较著名的有,Google编码规范,jQuery编码规范,dojo编码规范以及Yahoo!编码规范,等等。

第一,Indentation Levels缩进。目前比较流行的是2空格缩进和4空格缩进,比如谷歌的是2空格的,但是jQuery和Yahoo!是4空格的。而Nicbola建议使用4个空格的tab键缩进,他的理由是:
    1.大多数编辑器默认是4个空格的
    2.此外,两个空格缩进不够明显;
不管采用哪种方法哪种缩进方法,团队开发一定要采用相同的缩进,切忌同一个项目里面,有些采用两空格缩进,有些采用4空格缩进。
 
 
第二,line length and line breaking(行的长度和换行),不少开发者喜欢把一行代码写的很长很长,要拖动水平滚动条才可以看全一行的代码,事实上,这是不好的做法,在很多的编码规范里面,都对行长度做了限制的。一般的,一行代码的长度不要超过80个字符。当字母超过限制的长度时,(一般为80个字母),一定要换行。换行需要缩进,而且还是二级缩进(所谓二级缩进就是缩进再缩进,也即按下两个tab键)。比如下面的代码:
 
// 推荐写法,在运算符结尾处断行(逗号也是运算符),而且缩进也正确,用了二级缩进
callAFunction(document, element, window, "some string value", true, 123,
navigator); // 不推荐写法,因为只用了一级缩进
callAFunction(document, element, window, "some string value", true, 123,
navigator); // Bad: 不推荐写法,不是以运算符结尾处断行
callAFunction(document, element, window, "some string value", true, 123
, navigator);
断行需要注意的是,为了避免JavaScript引擎自动在末尾添加分号导致出错,往往都是在运算符结尾处断行的;在这种断行规则在块级语句里同样适用的,如下是if语句的断行:
if (isLeapYear && isFebruary && day == 29 && itsYourBirthday &&
noPlans) {
waitAnotherFourYears();
}
不过有一个例外,就是为变量赋值的时候,第二行的起始位置要跟第一行的等号的右部的首个字符对齐,这样说有点儿拗口,直接来个例子说明吧,如下所示:
var result = something + anotherThing + yetAnotherThing + somethingElse +
anotherSomethingElse;
我们为变量result赋值,第二行的anotherSomethingElse与第一行的等号右边的第一个字符(即something的第一个字符s)对齐的;
 
第三.naming(命名规则)
一般的,建议使用小写的字母开头的驼峰命名规则,如下
var schoolName;

变量的命名最好是以名词开头,如下:
var schoolName;

 

函数命名最好以动词开头,常用的有can, has, is, get, set,如下:
function getSchoolName() {

}
变量类型最好可以猜出变量的类型,比如:count, length, size等可以知道是Number类型的,而schoolName, title, color, type等都是字符String类型的,此外,循环的趟数常用i, j, k等;
 
但是有一类函数建议使用大写字母开头的,那就是construtor(构造函数)。构造函数是用来创建对象的,通常采用pascal的命名规则,即首字母大写的驼峰命名,以便跟普通函数可以区分开,如下:
// 推荐写法
function Person(name) {
this.name = name;
}
Person.prototype.sayName = function() {
alert(this.name);
};
var me = new Person("Nicholas");
 
第四,String(字符串)
javascript的字符串既可以使用单引号包起来,也可以使用双引号。如下面都是允许的:
var name = "Nicholas says, \"Hi.\"";
var name = 'Nicholas says, "Hi"';
但是为了统一,不要有时使用双引号,有时使用单引号。如下面代码就不好的了:
var p1, p2;
p1 = "Tom";
p2 = "Jane"
关于字符串的使用还有一个问题,尽量不要使用multiline strings(多行字符串),而是应该把他们拆成多个字符串,然后是用“+”进行拼接,如下:
//不推荐写法
var longString = "Here's the story, of a man \
named Brady."; //推荐写法
var longString = "Here's the story, of a man " +
"named Brady.";
作者建议使用双引号,因为,其他很多语言都是用双引号的。比如你既写JavaScript代码,又写Java言代码,如果你一直都用双引号的话,那就不用老是去想“我现在是在写JavaScript还是Java呢”!
 
第五,statement(块级语句)
块级语句主要包括下面这些:    • if     • for    • while    • do...while    • try...catch...finally等等,很多时候,当块级语句只有一条语句时,很多人都喜欢省略花括号,如下:
if (condition)
doSomething();
现在这个代码是没问题的,如果一段时间之后,我们想要为这个块级语句扩展代码,比如,在if里面添加多一个语句,如下:
if (condition)
doSomething();
doSomethingElse();
这时候,doSomethingElse();无论如何都是会执行的,因为他不是在if里面的,但这不是我们想要的。所以,为了避免扩展时出现类似的问题,应该养成无论何时都要添加花括号,哪怕只有一条语句,上面的例子推荐写法,应该如下:
if (condition) {
doSomething();
}
此外,对于块级元素的左花括号(“{”)的位置一般建议写在块级语句开始行的后面,Google JavaScript Style Guides,以及jQuery都是推荐这种写法的,如下:
if (condition) {
doSomething();
} else {
doSomethingElse();
}
而不要写在另起一行的开头,如下:
if (condition)
{
doSomething();
}
else
{
doSomethingElse();
}
还有就是,左花括号前面要添加一个空格,如下所示
if (condition) {
doSomething();
}
 
第六,函数调用时,函数名和左括号之间不要有空格
// 推荐写法
doSomething(item);
// 不推荐写法,这看起来像块级语句了
doSomething (item);
第七,等式( equality)
 一般的,在比较两个不同类型的数值是否相等时,建议使用“===”和“!==”,而不要使用“==”和"!="。因为,如果比较两个不同类型的数值时,"=="和"!="会发生强制类型转换的,所以这样的比较结果有时候是不太准确的。比如,数字跟字符串的比较,会自动把字符串转换成数字的:
// The number 5 and string 5
console.log(5 == "5"); // true
// The number 25 and hexadecimal string 25
console.log(25 == "0x19"); // true
 
 
 
 
 
 
 
 
 
 
 

JavaScript编码风格的更多相关文章

  1. 一些达成共识的JavaScript编码风格约定

    如果你的代码易于阅读,那么代码中bug也将会很少,因为一些bug可以很容被调试,并且,其他开发者参与你项目时的门槛也会比较低.因此,如果项目中有多人参与,采取一个有共识的编码风格约定非常有必要.与其他 ...

  2. 一些达成共识的JavaScript编码风格约定【转】

    如果你的代码易于阅读,那么代码中bug也将会很少,因为一些bug可以很容被调试,并且,其他开发者参与你项目时的门槛也会比较低.因此,如果项目中有多人参与,采取一个有共识的编码风格约定非常有必要.与其他 ...

  3. JavaScript编码风格指南(中文版)

    前言: 程序语言的编码风格对于一个长期维护的软件非常重要,特别是在团队协作中.如果一个团队使用统一规范的编码分风格,可以提高团队的协作水平和工作效率.编程风格指南的核心是基本的格式化规则,这些规则决定 ...

  4. 良好的JavaScript编码风格(语法规则)

    编码风格 1.概述 "编程风格"(programming style)指的是编写代码的样式规则.不同的程序员,往往有不同的编程风格. 有人说,编译器的规范叫做"语法规则& ...

  5. 【荐】JavaScript编码风格

    作者:阮一峰 Douglas Crockford是 JavaScript 权威,Json 格式就是他的发明. 去年 11 月他有一个演讲(Youtube),谈到了好的 JavaScript 编程风格是 ...

  6. 《编写可维护的 Javascript》读书笔记(附录 A 部分):Javascript 编码风格指南(1)原始值

    记录一下比较有用的编码规范(该指南是基于 Java 语言编码规范和 Javascript 编程规范,同时结合作者 Nicholos Zakas 的个人经验和喜好). 一些关于格式(包括缩进.行的长度. ...

  7. Airbnb JavaScript 编码风格指南(2018年最新版)

    原网址 :  https://segmentfault.com/a/1190000013040555 类型 基本类型:直接存取 string number boolean null undefined ...

  8. JavaScript 编码风格指南

    A.1  缩进 // 4个空格的层级缩进 if (true) { doSomething(); } A.2  行的长度 // 每行限于80个字符,超出则在运算符后换行,缩进2个层级(8个空格) doS ...

  9. JavaScript编码规范指南

    前言 本文摘自Google JavaScript编码规范指南,截取了其中比较容易理解与遵循的点作为团队的JavaScript编码规范. JavaScript 语言规范 变量 声明变量必须加上 var  ...

随机推荐

  1. elk之kibana

    环境: centos7 jdk8 参考: https://www.elastic.co/guide/en/elasticsearch/reference/current/rpm.htmlhttp:// ...

  2. 互评Final版本

    作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2478] 基于NABCD评论作品,及改进建议 杨老师粉丝群.作品:<Pin ...

  3. 20165214 实验三 敏捷开发与XP实践

    一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:朱文远 学号:20165214 指导教师:娄嘉鹏 实验日期:2018年4月28日 实验时间:15:35 - 17:15 实验序号:三 ...

  4. day 31 udp 协议SOCK_DGRAM

    udp 服务端引用socket=类型,协议绑定地址 和 端口while 循环收到 data addr = 服务.recvfrom(1024)发送 服务.sendto(data,addr(ip 端口)) ...

  5. 转--HC05-两个蓝牙模块间的通信

    示例蓝牙: 蓝牙A地址:3014:10:271614 蓝牙B地址:2015:2:120758 //============================================= 步骤: 1 ...

  6. Delphi 10.3终于来了

    http://altd.embarcadero.com/download/radstudio/10.3/delphicbuilder10_3_0_94364.iso   安装工具: http://ww ...

  7. 制作Wi-Fi Ducky远程HID攻击设备

    1.介绍WIFI DUCKY 它是一个Wi-Fi控制的BadUSB设备来远程执行Ducky Scripts. 使用充当键盘的USB设备来注入攻击,Hak5 的 USB Rubber Ducky 是这种 ...

  8. 在Linux系统下mail命令的用法

    在Linux系统下mail命令的测试 1. 最简单的一个例子: mail -s test admin@aispider.com 这条命令的结果是发一封标题为test的空信给后面的邮箱,如果你有mta并 ...

  9. python实现的简单点对点(p2p)聊天

    点对点聊天首先是基于多线程的网络编程,其次就是将每一个连接都保存为一个具有独一属性的对象并添加到连接列表中,对于每一个连接对象发送过来的信息必须要包含主要的三项内容(from,to,messages) ...

  10. 2016ICPC-大连 To begin or not to begin (简单思维)

    A box contains black balls and a single red ball. Alice and Bob draw balls from this box without rep ...