资讯专栏INFORMATION COLUMN

编写可维护的JavaScript

yanest / 707人阅读

摘要:通用原则严禁使用,只在别无他法时使用。和也是可以使用的,但不用字符串形式而要用函数。每种类型都代表全局作用域中的一个构造函数,并分别表示各自对用的原始值的对象。

语句和表达式

所有的块语句都应当使用花括号。包括:

if

for

while

do…while…

try…catch…finally

//不好的写法
if (condition)
    doSomethind();
//不好的写法
if (condition) doSomething();
//好的写法
if (condition) {
    doSomethind();
}
//不好的写法
if (condition) { doSomething(); }
花括号的对齐方式

两种风格:第一种将花括号放置在块语句中第一行代码的末尾;第二种将左花括号放置于块语句首行的下一行。

块语句间隔

语句名、圆括号、和左花括号之间没有空格间隔

if(condition){

   doSomething();

}

在左圆括号之前和右圆括号之后各添加一个空格

if (codition) {

   doSomething:

}

在左圆括号后和右圆括号前各添加一个空格

if ( condition ) {

   doSomething();

}

个人比较喜欢第二种,易读但不是太麻烦。

switch语句

缩进

Java风格:

switch (condition) {
    case "first":
        //code
        break;
    case "second":
        //code
        break;
    default:
        //code
}

每条case语句相对于switch关键字都缩进一个层级
从第二条case语句开始,每条case语句前后都各有一个空行。

Dojo风格:

switch (condition) {
case "first":
    //code
    break;
case "second":
    //code
    break;
default:
    //code
}

default
很多人认为不论何时都不应当省略default,哪怕default什么都不做。
个人不太喜欢写。

with语句

咱们就尽量不要写with语句了。

for-in循环

最好使用hasOwnProperty()方法来为for-in循环过滤出实例属性。

var prop;
for (prop in object) {
    if(object.hasOwnProperty(prop)) {
        console.log("...");
    }
}

不要把for-in用在数组的遍历上

//不好的写法
var vaules = [1, 2, 3],
    i;
for (i in vaules) {
    process(item[i]);
}
变量、函数和运算符 变量声明

建议将局部变量的定义作为函数内第一条语句。

function doSomethingWithItems(items) {
    
    var i, len;
    var value = 10;
    var result = value + 10;
    for (i=0, len=items.length; i < len; i++) {
        doSomething(items[i]);
    }
}
函数声明

推荐先声明JavaScript函数然后使用函数。

function doSomething() {
    //code
}
doSomething();

此外,函数声明不应出现在语句块之内。
//不好的写法

if (condition) {
    function doSomething() {
        //code
    }
} else {
    function doSomething() {
        //code
    }
}
函数调用间隔

推荐风格:在函数名和左花括号之间没有空格。

//好的写法
doSomething(item);
//不好的写法:看起来想一个块语句
doSomething (item);
立即调用的函数

匿名函数可以通过在最后加上一对圆括号来立即执行并返回一个值,然后将这个值赋值给变量。

// 不好的写法
var value = function() {
    // 函数体
    return {
        message: "Hi"
    }
}();

为了让立即执行的函数能够被一眼看出来,可以将函数用一对圆括号包裹起来。

// 好的写法
var value = (function() {
    // 函数体
    return {
        message: "Hi"
    }
}());
严格模式

最好不要再全局作用域中使用"use strict"。

// 不好的写法 - 全局的严格模式
"use strict";
function doSomething() {
    // code
}
// 好的写法
function doSomething() {
    "use strict";
    // code
}
相等

推荐不要使用 == 和 !=,而应当使用 === 和 !==。

eval()

通用原则:严禁使用Function,只在别无他法时使用eval()。setTimeout()和setInterval()也是可以使用的,但不用字符串形式而要用函数。
ECMAScript 5 严格模式对于eval()有着严格的限制,禁止在一个封闭的作用域中使用它创建变量或者函数。

原始包装类型

JavaScript里有三种原始包装类型:String、Boolean和Number。每种类型都代表全局作用域中的一个构造函数,并分别表示各自对用的原始值的对象。

// 不好的做法
var name = new String("Nicholas");

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/79275.html

相关文章

  • 编写维护JavaScript》之编程实践

    摘要:最近读完编写可维护的,让我受益匪浅,它指明了编码过程中,需要注意的方方面面,在团队协作中特别有用,可维护性是一个非常大的话题,这本书是一个不错的起点。扩展阅读编写可维护的欢迎来到石佳劼的博客,如有疑问,请在原文评论区留言,我会尽量为您解答。 最近读完《编写可维护的JavaScript》,让我受益匪浅,它指明了编码过程中,需要注意的方方面面,在团队协作中特别有用,可维护性是一个非常大的话...

    张春雷 评论0 收藏0
  • 读《编写维护javascript》第一章

    摘要:没有初始化的变量都会赋值为尽量避免使用因为没有声明的变量也会判断为类型。对象直接量,不建议使用构造函数创建对象数组直接量,不建议使用构造函数创建数组 编写可维护代码的重要性 程序是给人读的,只是偶尔给机器运行一下 1、软件生命周期的80%成本是发生在为维护上;2、几乎所有的软件维护者都不是最初的创建者;3、编写规范提高了软件代码的可读性,它让软件工程师快速充分的理解代码; 编写规范 缩...

    maxmin 评论0 收藏0
  • javascript eval()——编写维护javascript读书笔记

    摘要:尽管在类库中,可能会经常用到通常和操作有关,另外三种用法即使也非常罕见。一个通用的原则是,禁止使用,并且只在别无他法时使用,。和也是可以使用的,但不要用字符串形式而要用函数 再javascript中,eval()的参数是一个字符串,eval()会将传入的字符串当做代码来执行,开发者可以通过这个函数来载入外部的javascript代码,活着随机生成Javascript代码并执行它,比如:...

    lemon 评论0 收藏0
  • 编写维护JavaScript--编程风格篇

    摘要:写在前面新司机最近读完编写可维护的,学到不少东西。书分为编程风格编程实践自动化三个部分。编程风格并不是绝对的,每个人或团队都有自己的编程风格,但知道哪些地方需要注意的话,还是有助于新司机完成代码风格的转变。 写在前面 新司机最近读完《编写可维护的JavaScript》,学到不少东西。书分为编程风格、编程实践、自动化三个部分。其中编程风格是你的代码格式约定,统一的格式不仅仅有利于团队,也...

    AnthonyHan 评论0 收藏0
  • [JS进阶] 编写维护性代码 (1)

    摘要:如果值是基本类型,则用操作符检查其类型。总结所有编程语言都需要可维护性良好的代码,这个很重要,因为大部分开发人员都花费大量时间维护他人的代码。 o(╯□╰)o 这并不是什么史诗巨作,没有非常深入去挖掘这类问题,只是从平常的JS代码习惯,参考书籍总结而来,希望对你有帮助的! 今天的web应用大至成千上万行的javascript代码,执行各种复杂的过程,这种演化让我们开发者必...

    Youngdze 评论0 收藏0
  • <<编写维护javascript>> 笔记5(UI层松耦合)

    摘要:由于第四章太稀松平常了于是就直接跳到第五章了这里我就草草的说一下第四章的几个点吧在严格模式的应用下不推荐将用在全局作用域中相等推荐尽量使用和守则如果是在没有别的方法来完成当前任务这时可以使用原始包装类型不推荐创建类型时用等创建类型从这一章节 由于第四章太稀松平常了, 于是就直接跳到第五章了.这里我就草草的说一下第四章的几个点吧 在严格模式的应用下 不推荐将use strict;用在全...

    saucxs 评论0 收藏0

发表评论

0条评论

yanest

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<