第一章 基本的格式化

1.4 ① 换行

当一行长度到达了单行最大的字符限制时,就需要手动将一行拆成俩行。通常我们会在运算符后换行,下一行会增加俩个层级的缩进。

    // 好的做法: 在运算符后换行,第二行追加俩个缩进
callFunction(document, element, window, "some string value", true, 123,
navigator); // 不好的做法: 在运算符之前换行了
callFunction(document, element, window, "some string value", true, 123
, navigator)

目的: 防止ASI(Automatic Semicolon Insertion)机制会在某些场景下在行结束的位置插入分号。总是将一个运算符置于行尾, ASI就不会自作主张地插入分号,也就避免了错误的发生。

1.5 ② 空行

代码看起来应当像一系列可读的段落,而不是一段柔在一起的连接文本。有时一段代码的语义和另一段代码不相关,这时就应该使用空行将它分隔。

1.6 ③ 命名

JavaScript语言的核心ECMAScript,即是遵照了驼峰式大小写(Camel case)命名法。驼峰式大小写命名法是由小写字母开始的,后续每个单词首字母都大写。

var thisIsMyName;

var anotherVariable;

var aVeryLongVariableName; 

1.6.1 ④ 变量和函数

变量名应当总是遵守驼峰式大小写命名法,并且命名前缀是名词。函数名前缀应当是动词。对于函数和方法命名来说,第一个单词应该是动词,这里有一些使用动词常见的约定:

动词 含义
can 函数返回一个布尔值
has 函数返回一个布尔值
is 函数返回一个布尔值
get 函数返回一个非布尔值
set 函数用来保存一个值
    // 好的写法
var count = 10;
var myName = "Nicholas";
var found = true; // 不好的写法:变量看起来像函数
var getCount = 10;
var isFound = true; // 好的写法
funciton getName(){
return myName;
} // 不好的写法
function theName(){
return myName;
}

 1.6.3 ⑤ 构造函数

在JavaScript中,构造函数只不过是前面冠以new运算符的函数,用来创建对象,构造函数的命名遵守大驼峰命名法(Pascal Case)。

Pascal Case和 Camel Case都表示”驼峰大小写“,二者的区别在于Pascal Case以大写字母开始。因此anotherName可以替换成AnotherName。这样做可以将构造函数从变量和普通函数中区分出来。构造函数的命名也常常是名词,因为它们是用来创建某个类型的实例的。

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

1.7.1 ⑥ 直接量

在JavaScript中,字符串是独一无二的。字符串可以用双引号括起来,也可以用单引号括起来。

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

你需要关心的是:你的代码应当从头到尾只保持一种风格

关于字符串还有另外一个问题需要注意,创建多行字符串。

 // 不好的写法
var longSring = "Here 's the stroy, of a man \
named Bradyh"
// 好的写法
var longString = "Here's the story, of a man " +
"name Bradyh"

多行字符串的一种替代写法:使用字符串连接符(+)将字符创分成多份。

1.7.3 ⑦ 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();
}
}

1.7.5 ⑧ 对象直接量

  // 不好的写法
var book=new Object();
book.title = "Maintainable JavaScript";
book.author = "Nicholas C. Zakas";
// 好的写法
var book = {
title:"Maintainable JavaScript",
author:"Nicholas C. Zakas"
};
// 不好的做法
var colors = new Array("red", "green", "blue");
var numbers = new Array(, , , );
// 好的做法
var colors = ["red", "green", "blue"];
var numbers = [, , , ];

读《编写可维护的JavaScript》第一章总结的更多相关文章

  1. [已读]编写可维护的javascript

    13年4月份出版,作者是大名鼎鼎的Zakas,他的另两本书<javascript高级程序设计>与<高性能javascript>你一定听过或者读过. 这本书重点讲了编码风格和编码 ...

  2. 【读书笔记】读《编写可维护的JavaScript》 - 编程实践(第二部分)

    本书的第二个部分总结了有关编程实践相关的内容,每一个章节都非常不错,捡取了其中5个章节的内容.对大家组织高维护性的代码具有辅导作用. 5个章节如下—— 一.UI层的松耦合 二.避免使用全局变量 三.事 ...

  3. 拯救一切强迫症 - 读《编写可维护的 JavaScript》(一)

    拯救一切强迫症 - 读<编写可维护的 JavaScript>(一) 本文写于 2020 年 4 月 24 日 我在小学的时候就有接触过编程,所以读大一的时候 C 语言还算是轻车熟路.自然会 ...

  4. 编写可维护的JavaScript 收纳架

    如果你看过Nicolas C.Zakas写过的任何作品,你必须承认他是个不折不扣的天才.也只有天才级的才能写出<JavaScript高级程序设计>让所有的前端攻城师人手一本.Nicolas ...

  5. 《编写可维护的JavaScript》之编程实践

    最近读完<编写可维护的JavaScript>,让我受益匪浅,它指明了编码过程中,需要注意的方方面面,在团队协作中特别有用,可维护性是一个非常大的话题,这本书是一个不错的起点. 本书虽短,却 ...

  6. 编写可维护的Javascript读书笔记

    写在前面:之前硬着头皮参加了java方面的编程规范培训,收货良多,工作半年有余的时候,总算感觉到一丝丝Coding之美,以及造轮子的乐趣,以至于后面开发新功能的时候,在Coding style方面花了 ...

  7. 《编写可维护的javascript》读书笔记(中)——编程实践

    上篇读书笔记系列之:<编写可维护的javascript>读书笔记(上) 上篇说的是编程风格,记录的都是最重要的点,不讲废话,写的比较简洁,而本篇将加入一些实例,因为那样比较容易说明问题. ...

  8. 《编写可维护的javascript》读书笔记(上)

    最近在读<编写可维护的javascript>这本书,为了加深记忆,简单做个笔记,同时也让没有读过的同学有一个大概的了解. 一.编程风格 程序是写给人读的,所以一个团队的编程风格要保持一致. ...

  9. 编写可维护的JavaScript之编程风格

    在团队中只有每个人的编程风格一致,大家才能方便的互相看懂和维护对方的代码. 1. 层级缩进 对于层级缩进目前有两种主张:1)使用制表符这种方法有两种好处,第一,制表符和缩进层级之间是一一对应关系,符合 ...

  10. 编写可维护的JavaScript代码(部分)

    平时使用的时VS来进行代码的书写,VS会自动的将代码格式化,所有写了这么久的JS代码,也没有注意到这些点.看了<编写可维护的javascript代码>之后,做了些笔记. var resul ...

随机推荐

  1. javaweb--HTTP状态码

    HTTP状态码(HTTP Status Code) 一些常见的状态码为: 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务不可用 所有状态解释:点击查看 1xx(临时响应 ...

  2. 常用SQLPLUS工具命令

    有两个   EMPNO ENAME          SAL的列标题 满   14行   为一个标题行 列行重叠了 虽然上述是修改了 linesize 的值,但是仍然没有改变 登录框的宽度,下面是修改 ...

  3. Yii源码阅读笔记(二十九)

    动态模型DynamicModel类,用于实现模型内数据验证: namespace yii\base; use yii\validators\Validator; /** * DynamicModel ...

  4. Android中<meta-data>的使用

    [转]  原文 在AndroidManifest.xml中,<meta-data>元素可以作为子元素,被包含在<activity>.<application> .& ...

  5. 数据库表结构对比同步mysqldiff

    开发服务器的数据库表结构进行了修改,或者修改过多,为了与线上的数据库结构同步,可以使用mysqldiff工具对线上数据库打补丁. mysqldiff Windows下载地址:http://dev.my ...

  6. 利用开源jPlayer播放.flv视频文件

    最近工作中用到视频播放,在网上搜索对比了好几款开源播放插件后,觉得 jPlayer 是比较不错的,故作此记录! 接下来先快速的展示一下 利用jPlayer播放.flv视频的效果: <!DOCTY ...

  7. Unit04 - 继承的意义(下) 、 访问控制 、 static和final

    Unit04  -  继承的意义(下) . 访问控制 . static和final 1.方法的重写(Override):重新写.覆盖  1)发生在父子类中,方法名称相同,参数列表相同,方法体不同  2 ...

  8. 白话学习MVC(九)View的呈现一

    一.概述 本节来看一下ASP.NET MVC[View的呈现]的内容,View的呈现是在Action执行之后进行,Action的执行生成一个ActionResult,[View的呈现]的功能就是:通过 ...

  9. iOS,plist文件、pct文件,工程设置

    1.使用pch文件 2.在info.plist中配置URL Schemes 3.plist配置拍照界面,复制,粘贴等菜单的显示语言 显示中文 4.使用非ARC库/ARC库 5.链接选项-Objc &a ...

  10. Java回顾之Spring基础

    第一篇:Java回顾之I/O 第二篇:Java回顾之网络通信 第三篇:Java回顾之多线程 第四篇:Java回顾之多线程同步 第五篇:Java回顾之集合 第六篇:Java回顾之序列化 第七篇:Java ...