成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript編碼風(fēng)格指南

Sourcelink / 1784人閱讀

摘要:首次發(fā)表在個(gè)人博客前言程序語(yǔ)言的編碼風(fēng)格指南對(duì)于一個(gè)長(zhǎng)期維護(hù)的軟件而言是非常重要的好的編程風(fēng)格有助于寫出質(zhì)量更高錯(cuò)誤更少更易于維護(hù)的程序。

首次發(fā)表在個(gè)人博客
前言

程序語(yǔ)言的編碼風(fēng)格指南對(duì)于一個(gè)長(zhǎng)期維護(hù)的軟件而言是非常重要的;好的編程風(fēng)格有助于寫出質(zhì)量更高、錯(cuò)誤更少、更易于 維護(hù)的程序。

團(tuán)隊(duì)合作需要制定一些代碼規(guī)范還有利用一些工具來(lái)強(qiáng)制要求團(tuán)隊(duì)代碼的風(fēng)格統(tǒng)一.畢竟很多情況下以后不一定是由寫一手代碼的人來(lái)維護(hù)代碼,所以有一個(gè)統(tǒng)一的代碼風(fēng)格很重要!!!

最近看了一下編寫可維護(hù)的JavaScript和編寫高質(zhì)量代碼:Web前端開發(fā)修煉之道,根據(jù)書中提倡的一些寫法,同時(shí)結(jié)合我個(gè)人的經(jīng)驗(yàn)和喜好做了一些改動(dòng),大致整理了如下JavaScript編碼風(fēng)格

JavaScript編碼風(fēng)格 1.縮進(jìn)

每一行的層級(jí)由4個(gè)空格組成,避免使用制表符(Tab)進(jìn)行縮進(jìn)

if (true) {
    doSomething();
}
2.行的長(zhǎng)度

每行長(zhǎng)度不應(yīng)該超過(guò)80個(gè)字符.如果一行多于80個(gè)字符,應(yīng)當(dāng)在一個(gè)運(yùn)算符(逗號(hào),加好等)后換行.下一級(jí)應(yīng)當(dāng)增加兩級(jí)縮進(jìn)(8個(gè)字符).

// 好的寫法
doSomething(arg1, arg2, arg3, arg4,
        arg5);

// 不好的寫法: 第二行只有4個(gè)空格的縮進(jìn)
doSomething(arg1, arg2, arg3, arg4,
    arg5);
// 不好的寫法: 在運(yùn)算符之前換行
doSomething(arg1, arg2, arg3, arg4
        ,arg5);
3.原始值

特殊值null除了下述情況應(yīng)當(dāng)避免使用

用來(lái)初始化一個(gè)變量,這個(gè)變量可能被賦值為一個(gè)對(duì)象

用來(lái)和一個(gè)已經(jīng)初始化的變量比較,這個(gè)變量可以是也可以不是一個(gè)對(duì)象

當(dāng)函數(shù)的參數(shù)期望是對(duì)象時(shí),被用作返回值傳出

// 好的做法
const person = null;

判斷一個(gè)變量是否定義應(yīng)當(dāng)使用 typeof 操作符

// 好的寫法
if (typeof constiable == "undefined") {
    // do something
}

// 不好的寫法
if (constiable == "undefined") {
    // do something
}
4.運(yùn)算符間距

二元運(yùn)算符前后必須使用一個(gè)空格來(lái)保持表達(dá)式的整潔.操作符包括賦值運(yùn)算符和邏輯運(yùn)算符

// 好的寫法
const found = (values[i] === item);
// 不好的寫法: 丟失了空格
const found = (values[i]===item);

// 好的寫法
if (found && (count > 10)) {
    doSomething();
}
// 不好的寫法: 丟失了空格
if (found&&(count>10)) {
    doSomething();
}

// 好的寫法
for(let i = 0; i < count; i++) {
    process(i);
}
// 不好的寫法: 丟失了空格
for(let i=0; i
5.括號(hào)間距

當(dāng)使用括號(hào)時(shí),緊接左括號(hào)之后和緊接右括號(hào)之前不應(yīng)該有空格

// 好的寫法
const found = (values[i] === item);
// 不好的寫法: 左括號(hào)之后有額外的空格
const found = ( values[i] === item);

// 好的寫法
if (found && (count > 10)) {
    doSomething();
}
// 不好的寫法: 右括號(hào)之后有額外的空格
if (found && (count > 10) ) {
    doSomething();
}

// 好的寫法
for(let i = 0; i < count; i++) {
    process(i);
}
// 不好的寫法: 參數(shù)兩邊有額外的空格
for(let i = 0; i< count; i++) {
    process( i );
}
6.對(duì)象直接量

對(duì)象直接量應(yīng)當(dāng)使用如下格式

起始左花括號(hào)應(yīng)當(dāng)同表達(dá)式保持同一行

每個(gè)屬性的名值對(duì)應(yīng)當(dāng)保持一個(gè)縮進(jìn),第一個(gè)屬性應(yīng)當(dāng)在左花括號(hào)后另起一行.

每個(gè)屬性的名值對(duì)應(yīng)當(dāng)使用不含引號(hào)的屬性名,其后緊跟一個(gè)冒號(hào)(之前不含空格),而后是值

倘若屬性值是函數(shù)類型,函數(shù)體應(yīng)當(dāng)在屬性名之下另起一行,而且其前后均應(yīng)保留一個(gè)空行

一組相關(guān)的屬性前后可以插入空行以提高代碼的可讀性

結(jié)束的右花括號(hào)應(yīng)當(dāng)獨(dú)占一行

// 好的寫法
const object = {

    key1: value1,
    key2: value2,

    func: function() {

    },

    key3: value3,
};

// 不好的寫法: 不恰當(dāng)?shù)目s進(jìn)
const object = {
        key1: value1,
        key2: value2,
    };

// 不好的寫法:函數(shù)體缺少空行
const object = {

    key1: value1,
    key2: value2,
    func: function() {

    },
    key3: value3,
};

當(dāng)對(duì)象字面量作為函數(shù)參數(shù)時(shí),如果值是變量,起始花括號(hào)應(yīng)當(dāng)同函數(shù)名在同一行.所有其余先前列出的規(guī)則同樣適用

// 好的寫法
doSomething({
    key1: value1,
    key2: value2,
});

// 不好的寫法
doSomething({ key1: value1, key2: value2 });
7.注釋

頻繁地適用注釋有助于他人理解你的代碼.如下情況應(yīng)當(dāng)使用注釋

代碼晦澀難懂

可能被誤認(rèn)為錯(cuò)誤的代碼

必要但不明顯的針對(duì)特定瀏覽器的代碼

對(duì)于對(duì)象,方法或者屬性,生成文檔是有必要的(使用恰當(dāng)?shù)奈臋n注釋).

1).單行注釋

使用單行注釋當(dāng)用來(lái)說(shuō)明一行代碼或者一組代碼.單行注釋可能有三種使用方式

獨(dú)占一行的注釋,用來(lái)解釋下一行代碼

在代碼行的尾部的注釋,用來(lái)解釋它之前的代碼

多行,用來(lái)注釋掉一個(gè)代碼塊

// 好的寫法
if (condition) {

    // 如果代碼執(zhí)行到這里,則說(shuō)明通過(guò)了所有的安全性檢測(cè)
    allowed();
}

// 不好的寫法:注釋之前沒(méi)有空行
if (condition) {
    // 如果代碼執(zhí)行到這里,則說(shuō)明通過(guò)了所有的安全性檢測(cè)
    allowed();
}

// 不好的寫法: 錯(cuò)誤的縮進(jìn)
if (condition) {

// 如果代碼執(zhí)行到這里,則說(shuō)明通過(guò)了所有的安全性檢測(cè)
    allowed();
}

// 不好的寫法: 這里應(yīng)當(dāng)用多行注釋
// 接下來(lái)的這段代碼非常難, 那么,讓我詳細(xì)的解釋一下
// 1. xxxx
// 2. xxxx
if (condition) {

// 如果代碼執(zhí)行到這里,則說(shuō)明通過(guò)了所有的安全性檢測(cè)
    allowed();
}

對(duì)于代碼行尾單行注釋的情況,應(yīng)確保代碼結(jié)尾同注釋之間至少一個(gè)縮進(jìn)

// 好的寫法
const result = something + somethingElse; // somethingElse will never be null

// 不好的寫法: 代碼和注釋間沒(méi)有足夠的空格
const result = something + somethingElse;// somethingElse will never be null

注釋一個(gè)代碼塊時(shí)在連續(xù)多行使用單行注釋是唯一可以接受的情況.多行注釋不應(yīng)當(dāng)在這種情況下使用

// 好的寫法
// if(condition) {
//     doSomething();
// }
2).多行注釋

多行注釋應(yīng)當(dāng)在代碼需要更多文字去解釋的時(shí)候使用.每個(gè)多行注釋都至少有如下三行.
1.首行僅僅包括 /* 注釋開始.該行不應(yīng)當(dāng)有其他文字
2.接下來(lái)的行以 * 開頭并保持左對(duì)齊.這些行可以由文字描述
3.最后一行以 */開頭并同先前行保持對(duì)齊.也不應(yīng)當(dāng)有其他文字

多行注釋的首行應(yīng)當(dāng)保持同它描述代碼的相同層次的縮進(jìn).后續(xù)的每行應(yīng)當(dāng)有同樣層次的縮進(jìn)并附加一個(gè)空格(為了適當(dāng)保持 * 字符的對(duì)齊).每一個(gè)多行代碼之前應(yīng)當(dāng)預(yù)留一個(gè)空格

// 好的寫法
if (condition) {

    /*
     * 如果代碼執(zhí)行到這里
     * 說(shuō)明通過(guò)了所有的安全性檢測(cè)
    */
    allowed();
}

// 不好的寫法: 注釋之前無(wú)空行
if (condition) {
    /*
     * 如果代碼執(zhí)行到這里
     * 說(shuō)明通過(guò)了所有的安全性檢測(cè)
    */
    allowed();
}
// 不好的寫法: 星號(hào)后沒(méi)有空格
if (condition) {

    /*
     *如果代碼執(zhí)行到這里
     *說(shuō)明通過(guò)了所有的安全性檢測(cè)
    */
    allowed();
}
// 不好的寫法: 錯(cuò)誤的縮進(jìn)
if (condition) {

/*
 * 如果代碼執(zhí)行到這里
 * 說(shuō)明通過(guò)了所有的安全性檢測(cè)
*/
    allowed();
}

// 不好的寫法: 代碼尾部注釋不要用多行注釋格式
const result = something + somethingElse; /* somethingElse 不應(yīng)當(dāng)取值為null */
3)注釋聲明

注釋有時(shí)候可以用來(lái)給一段代碼聲明額外的信息.這些聲明的格式以單個(gè)單詞打頭并緊跟一個(gè)雙引號(hào).可使用的聲明如下

TODO: 說(shuō)明代碼還未完成.應(yīng)當(dāng)包含下一步要做的事情

HACK: 表明代碼實(shí)現(xiàn)走了一個(gè)捷徑

XXX: 說(shuō)明代碼是有問(wèn)題的并應(yīng)當(dāng)盡快修復(fù)

FIXME: 說(shuō)明代碼是有問(wèn)題的并應(yīng)當(dāng)盡快修復(fù).重要性略次于XXX

REVIEW: 說(shuō)明代碼任何可能的改動(dòng)都需要評(píng)審

這些聲明可能在一行或多行注釋中使用,并且應(yīng)當(dāng)遵循同一般注釋類型相同的格式規(guī)則

// 好的寫法
// TODO: 我希望找到一種更快的方式
doSomething();
// 不好的寫法: 注釋聲明空格不正確
// TODO :  我希望找到一種更快的方式
doSomething();

// 好的寫法
// REVIEW: 有更好的方法嗎?
doSomething();
// 不好的寫法: 代碼和注釋應(yīng)當(dāng)保持同樣的縮進(jìn)
    // REVIEW: 有更好的方法嗎?
doSomething();
8.命名

變量命名應(yīng)當(dāng)采用駝峰命名格式,首字母小寫,每個(gè)單詞首字母大寫.變量名的第一個(gè)單詞應(yīng)當(dāng)是一個(gè)名詞(而非動(dòng)詞)比避免同函數(shù)混淆.不要在變量名中使用下劃線

// 好的寫法
const myName = "Jack";

// 不好的寫法: 大寫字母開頭
const MyName = "Jack";

// 不好的寫法: 動(dòng)詞開頭
const getMyName = "Jack";

// 不好的寫法: 使用下劃線
const my_name = "Jack";

函數(shù)命名應(yīng)當(dāng)采用駝峰命名格式.函數(shù)名的第一個(gè)單詞應(yīng)當(dāng)是動(dòng)詞(而非名詞)來(lái)避免同變量混淆.函數(shù)名中最好不要使用下劃線.

// 好的寫法
function doSomething() {
    // 代碼
}

// 不好的寫法: 大寫字母開頭
function DoSomething() {
    // 代碼
}
// 不好的寫法: 名詞開頭
function car() {
    // 代碼
}
// 不好的寫法: 使用下劃線
function do_something() {
    // 代碼
}

構(gòu)造函數(shù)--通過(guò)new元素安撫創(chuàng)建新對(duì)象的函數(shù)--也應(yīng)使用駝峰合適命名,首先首字母大寫.構(gòu)造函數(shù)命名應(yīng)當(dāng)以非動(dòng)詞開頭,因?yàn)閚ew代表著創(chuàng)建一個(gè)對(duì)象實(shí)例的操作

// 好的寫法
function MyObject() {

}
// 不好的寫法: 小寫字母開頭
function myObject() {
    
}
// 不好的寫法: 使用下劃線
function My_Object() {
    
}
// 不好的寫法: 動(dòng)詞開頭
function getMyObject() {
    
}

常量(不會(huì)被改變的變量)的命名應(yīng)當(dāng)是所有字母大寫,不同單詞之間用單個(gè)下劃線隔開.ES6中使用const來(lái)聲明一個(gè)常量

// 好的寫法
const TOTAL_COUNT = 10;
// 不好的寫法
const totalCount = 10;
// 不好的寫法: 混合模式
const total_COUNT = 10;

對(duì)象的屬性同變量的命名規(guī)范相同.對(duì)象的方法同函數(shù)的命名規(guī)則相同.如果屬性或者方法是私有的,應(yīng)當(dāng)在之前加一個(gè)下劃線

// 好的寫法
const object = {
    _count: 10,

    _getCount: function() {
        return this._count;
    }
}
9.賦值

當(dāng)給變量賦值時(shí),如果右側(cè)是含有比較語(yǔ)句的表達(dá)式,需要用圓括號(hào)包裹

// 好的寫法
const flag = (i < count);

// 不好的寫法:遺漏圓括號(hào)
const flag = i < count;
10.等號(hào)運(yùn)算符

使用 === (嚴(yán)格相等) 和 !==(嚴(yán)格不相等)代替 ==(相等) 和 !=(不等) 來(lái)避免弱類型轉(zhuǎn)換錯(cuò)誤

// 好的寫法
const same = (a === b);

// 不好的寫法: 使用 == 
const same = (a == b);
11.三元操作符

三元運(yùn)算符應(yīng)當(dāng)僅僅用在條件賦值語(yǔ)句中,而不要作為if語(yǔ)句的替代品.

// 好的寫法
const value = condition ? value1 : value2;

// 不好的寫法: 沒(méi)有賦值,應(yīng)當(dāng)使用 if 表達(dá)式
condition ? doSomething() : doSomethingElse();
12.語(yǔ)句 簡(jiǎn)單語(yǔ)句

每一行最多只包含一條語(yǔ)句.所有簡(jiǎn)單的語(yǔ)句都應(yīng)該以分號(hào)(;)結(jié)束.

// 好的寫法
const a = 1;
const b = 2;
const c = a + b;

// 不好的寫法: 多個(gè)表達(dá)式寫在一行
const a = 1;const b = 2;const c = a + b;
返回語(yǔ)句

返回語(yǔ)句當(dāng)返回一個(gè)值的時(shí)候不應(yīng)當(dāng)使用圓括號(hào)包裹,除非在某些情況下這么做可以讓返回值更容易理解.例如:

return;
return collection.size();
return (size > 0 ? size : defaultSize)
復(fù)合語(yǔ)句

復(fù)合語(yǔ)句是大括號(hào)括起來(lái)的語(yǔ)句列表;

括起來(lái)的語(yǔ)句應(yīng)當(dāng)較復(fù)合語(yǔ)句多縮進(jìn)一個(gè)層級(jí)

開始的大括號(hào)應(yīng)當(dāng)在復(fù)合語(yǔ)句所在行的末尾;結(jié)束的大括號(hào)應(yīng)當(dāng)獨(dú)占一行且同復(fù)合語(yǔ)句的開始保持同樣的縮進(jìn).

當(dāng)括號(hào)時(shí)控制結(jié)構(gòu)的一部分時(shí),諸如if或者for語(yǔ)句,所有語(yǔ)句都需要用打括號(hào)括起來(lái),也包括單個(gè)語(yǔ)句.這個(gè)約定使得我們更方便地添加語(yǔ)句而不用擔(dān)心忘記加括號(hào)而引起bug

像if一樣的語(yǔ)句開始的關(guān)鍵詞,其后應(yīng)當(dāng)緊跟一個(gè)空格,起始大括號(hào)應(yīng)當(dāng)在空格之后

if語(yǔ)句
if (condition) {
    statements
} else if (condition) {
    statements
} else {
    statements
}

絕不允許在if語(yǔ)句中省略花括號(hào)

// 好的寫法
if (condition) {
    doSomething();
} 
// 不好的寫法: 不恰當(dāng)?shù)目崭?if(condition){
    doSomething();
} 
// 不好的寫法: 遺漏花括號(hào)
if (condition) 
    doSomething();

// 不好的寫法: 所有代碼寫在一行
if (condition) { doSomething(); }
// 不好的寫法: 所有代碼寫在一行且沒(méi)有花括號(hào)
if (condition) doSomething();
for語(yǔ)句
for (initialization; condition; update) {
    statements
}

for (constiable in object) {
    statements
}

當(dāng)使用 for-in 語(yǔ)句時(shí),記得使用 hasOwnProperty() 進(jìn)行雙重檢查來(lái)過(guò)濾出對(duì)象的成員

while語(yǔ)句
while (condition) {
    statements
}
do語(yǔ)句
do {
    statements
} while (condition)
switch語(yǔ)句
switch (expression) {
    case expression:
        statements
    default:
        statements
}

switch下的每一個(gè)case都叮當(dāng)保持一個(gè)縮進(jìn).除第一個(gè)之外包括default在內(nèi)的每一個(gè)case都應(yīng)當(dāng)在之前保持一個(gè)空行
每一組語(yǔ)句(除了default)都應(yīng)當(dāng)以break, return, throw結(jié)尾,或者用一行注釋表示跳過(guò)

// 好的寫法
switch (value) {
    case 1:
       /* falls through */
    case 2:
        doSomething();
        break;
    case 3:
       return true;
    default:
       throw new Error("this should not happen");
}
try語(yǔ)句
try {
    statements
} catch (constiable) {
    statements
} finally {
    statements
}
13.嚴(yán)格模式

嚴(yán)格模式應(yīng)當(dāng)僅限在函數(shù)內(nèi)部使用,千萬(wàn)不要在全局使用.

ES6 的模塊自動(dòng)采用嚴(yán)格模式,不管你有沒(méi)有在模塊頭部加上"use strict";。
14.變量聲明

所有的變量在使用前都應(yīng)事先定義.變量定義應(yīng)放在函數(shù)開頭.
變量定義前應(yīng)當(dāng)初始化,并且賦值操作符應(yīng)當(dāng)保持一致的縮進(jìn).初始化的變量應(yīng)當(dāng)在未初始化變量之前.

推薦使用ES6的letconst來(lái)聲明變量
15.函數(shù)聲明

函數(shù)聲明應(yīng)當(dāng)在使用前提前定義.
一個(gè)不是作為方法的函數(shù)(也就是沒(méi)有作為一個(gè)對(duì)象的屬性)應(yīng)當(dāng)使用函數(shù)定義的格式(不是函數(shù)表達(dá)式和Function構(gòu)造器格式).
函數(shù)名和開始圓括號(hào)之前不應(yīng)當(dāng)有空格.結(jié)束的圓括號(hào)和右邊的花括號(hào)之間應(yīng)該留一個(gè)空格.右側(cè)的花括號(hào)應(yīng)當(dāng)同function關(guān)鍵字保持同一行.開始和結(jié)束括號(hào)之間不應(yīng)該有空格.參數(shù)名之間應(yīng)當(dāng)在逗號(hào)之后保留一個(gè)空格.函數(shù)體應(yīng)當(dāng)保持一級(jí)縮進(jìn)

// 好的寫法
function doSomething(arg1, agr2) {
    return arg1 + arg2;
}
// 不好的寫法: 第一行不恰當(dāng)?shù)目崭?function doSomething (arg1, agr2) {
    return arg1 + arg2;
}
// 不好的寫法: 
const doSomething = function doSomething(arg1, agr2) {
    return arg1 + arg2;
}
// 不好的寫法: 左側(cè)的花括號(hào)位置不對(duì)
function doSomething(arg1, agr2)
{
    return arg1 + arg2;
}
// 錯(cuò)誤的寫法: 使用Function構(gòu)造器
const doSomething = new Function("arg1", "agr2", "return arg1 + arg2");
16.留白

在邏輯相關(guān)的代碼塊之間添加空行可以提高代碼的可讀性

兩行空行權(quán)限在如下情況使用

在不同的源代碼文件之間

在類和接口定義之間

單行空行權(quán)限在如下情況使用

方法之間

方法中局部變量和第一行語(yǔ)句之間

多行或單行注釋之前

方法中邏輯代碼塊之間以提高代碼的可讀性

空格應(yīng)當(dāng)在如下情況中使用

關(guān)鍵詞后跟括號(hào)的情況應(yīng)當(dāng)用空格隔開

參數(shù)列表中逗號(hào)之后應(yīng)當(dāng)保留一個(gè)空格

所有的除了點(diǎn)(.)之外的二元運(yùn)算符,其操作數(shù)都應(yīng)當(dāng)用空格隔開.單目運(yùn)算符的操作數(shù)之間不應(yīng)該用空白隔開,諸如一元減號(hào),遞增(++),遞減(--)

for語(yǔ)句中的表達(dá)式之間應(yīng)當(dāng)用空格隔開

17. 需要避免的

切勿使用像String一類的原始包裝類型創(chuàng)建的新對(duì)象

避免使用eval()

避免使用with語(yǔ)句.改語(yǔ)句在嚴(yán)格模式中不復(fù)存在,可能在未來(lái)也將去除

使用工具(eslint)來(lái)強(qiáng)制約束 eslint 規(guī)則

eslint規(guī)則在.eslintrc.js中定義,覺(jué)得不合理的可以禁掉某條規(guī)則,或者有好的建議的也可以添加;
主要注意一下幾條:

代碼縮進(jìn)用4空格

語(yǔ)句必須默認(rèn)后加分號(hào)

使用單引號(hào)

提交代碼前將console.log語(yǔ)句刪掉或注釋掉(不然影響其他開發(fā)人員調(diào)試)

禁止使用const,使用es6的let,const聲明變量

還有一些情況是不需要檢測(cè)的,例如第3方的庫(kù), 框架、組件、ui庫(kù)等等,可以將這些文件放在.eslintignore文件中,可以忽略eslint的檢測(cè)

在文件頂部加上下面這行,可以禁掉整個(gè)文件的eslint規(guī)則

/* eslint-disable */
pre-commit

代碼提交之前會(huì)強(qiáng)制code-review,不符合規(guī)范的不允許提交代碼
使用方法
1.在命令行安裝

npm i --save-dev pre-commit

2.在package.json中配置

{
    "scripts": {
        "eslint": "eslint ./ --ext js,vue --ignore-pattern .eslintignore --cache --fix",
        "lint-message": "echo "開始 eslint 檢查, 存在 error 則會(huì)拒絕提交""
  ? },
  ? "pre-commit": [
        "lint-message",
        "eslint" // 進(jìn)行eslint檢查并自動(dòng)修復(fù)一些簡(jiǎn)單的格式錯(cuò)誤
  ? ],
}

代碼提交之前會(huì)強(qiáng)制code-review,不符合規(guī)范的不允許提交代碼

如果項(xiàng)目實(shí)在沒(méi)時(shí)間去改的話,可以 git commit -m "XXX" --no-verify 或 git commit -n "xxx" 強(qiáng)制提交

小技巧-vscode可以配置保存自動(dòng)修復(fù)eslint錯(cuò)誤

vscode安裝eslint插件,在配置中配置如下

{
     "eslint.autoFixOnSave": true,
     "eslint.enable": true,
     "eslint.options": {
        "extensions": [".js", ".vue", ".jsx"]
     },
     "eslint.validate": [
          {

              "language": "vue",
              "autoFix": true
          },
          {
              "language": "javascript",
              "autoFix": true
          },
          {
              "language": "javascriptreact",
              "autoFix": true
          }
      ],
}
配置完成之后,每次保存,都會(huì)自動(dòng)根據(jù) .eslintrc.js文件自動(dòng)修復(fù)空格,分號(hào)的錯(cuò)誤;但是最好還是在平常的編碼中養(yǎng)成一個(gè)良好的習(xí)慣,而不是依賴工具.

下列參考給出的文章及書籍,有時(shí)間一定要好好看一下,會(huì)幫助大家深刻理解JavaScript編碼風(fēng)格的重要性。永遠(yuǎn)記住,規(guī)范能解決大部分問(wèn)題。

參考

編寫可維護(hù)的JavaScript

編寫高質(zhì)量代碼:Web前端開發(fā)修煉之道

代碼整潔之道

ESLint

JavaScript編碼風(fēng)格

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/95550.html

相關(guān)文章

  • js 的5個(gè)不良編碼習(xí)慣,現(xiàn)在就改掉吧

    摘要:在這篇文章中,我描述了中常見的種不良編碼習(xí)慣。這是因?yàn)閷傩源嬖诘尿?yàn)證依賴于隱式轉(zhuǎn)換的布爾值。安裝使用最適合自己的編碼風(fēng)格配置設(shè)置一個(gè)預(yù)提交鉤子,在提交之前運(yùn)行驗(yàn)證。總結(jié)編寫高質(zhì)量和干凈的代碼需要紀(jì)律,克服不好的編碼習(xí)慣。 為了保證的可讀性,本文采用意譯而非直譯。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來(lái)篇優(yōu)質(zhì)文章等著你! 在閱讀JavaScript代碼時(shí),你是否有過(guò)這種感覺(jué) ...

    flybywind 評(píng)論0 收藏0
  • js 的5個(gè)不良編碼習(xí)慣,現(xiàn)在就改掉吧

    摘要:在這篇文章中,我描述了中常見的種不良編碼習(xí)慣。這是因?yàn)閷傩源嬖诘尿?yàn)證依賴于隱式轉(zhuǎn)換的布爾值。安裝使用最適合自己的編碼風(fēng)格配置設(shè)置一個(gè)預(yù)提交鉤子,在提交之前運(yùn)行驗(yàn)證。總結(jié)編寫高質(zhì)量和干凈的代碼需要紀(jì)律,克服不好的編碼習(xí)慣。 為了保證的可讀性,本文采用意譯而非直譯。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來(lái)篇優(yōu)質(zhì)文章等著你! 在閱讀JavaScript代碼時(shí),你是否有過(guò)這種感覺(jué) ...

    hellowoody 評(píng)論0 收藏0
  • [譯]JavaScript lint工具的比較

    摘要:工具幫助避免在編寫時(shí)出現(xiàn)愚蠢的錯(cuò)誤。并不檢測(cè)潛在的,比如,未使用的變量或意外的全局變量等。在提到的所有工具中,它具有最廣泛的功能支持。使用工具是捕獲問(wèn)題的良好步驟,但只能看到規(guī)則允許的錯(cuò)誤。也可用于此目的。 Lint工具幫助避免在編寫JavaScript時(shí)出現(xiàn)愚蠢的錯(cuò)誤。盡管有多年的經(jīng)驗(yàn),我仍然鍵入不正確的變量名稱,出現(xiàn)語(yǔ)法錯(cuò)誤,以及忘記正確地處理error。在浪費(fèi)自己時(shí)間,或更糟糕地...

    luck 評(píng)論0 收藏0
  • eclipse定制化配置調(diào)優(yōu)、初始化配置指南、可以解決啟動(dòng)慢等問(wèn)題

    摘要:配置的參數(shù)打開根目錄下的在最后面加上如下的參數(shù)測(cè)試環(huán)境位內(nèi)存雙核測(cè)試版本經(jīng)測(cè)試,啟動(dòng)速度比默認(rèn)配置有所提升,占用內(nèi)存也較少其中這三行為啟用方式,不能保證在不同環(huán)境下都是最優(yōu)配置,可以替換為多核和大內(nèi)存建議使 配置eclipse的jvm參數(shù) 打開eclipse根目錄下的eclipse.ini在最后面加上如下的jvm參數(shù) -Xms400m -Xmx1400m -XX:NewSize=128...

    Warren 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<