Javascript代碼規(guī)范

目的:總結(jié)記錄Javascript代碼書寫規(guī)范,寫出優(yōu)美的Javascript代碼痹愚,代碼潔癖只是一種態(tài)度虫碉。

一寓免、命名規(guī)范

ECMAScript 規(guī)范中標識符采用駝峰大小寫格式,駝峰命名法由小(大)寫字母開始盹沈,后續(xù)每個單詞首字母都大寫龄章。根據(jù)首字母是否大寫,分為兩種方式:

Pascal Case 大駝峰式命名法:
首字母大寫乞封。eg:StudentInfo做裙、UserInfo、ProductInfo
Camel Case 小駝峰式命名法:
首字母小寫肃晚。eg:studentInfo锚贱、userInfo、productInfo

標識符:包括變量关串、函數(shù)名拧廊、類名监徘、屬性名和函數(shù)或類的參數(shù),每個命名方法又略有不同吧碾,下面詳細解釋一下:

1. 變量

1)命名方法:小駝峰式命名法凰盔。
2)命名規(guī)范:前綴應(yīng)當是名詞。(函數(shù)的名字前綴為動詞倦春,以此區(qū)分變量和函數(shù))
3)命名建議:盡量在變量名字中體現(xiàn)所屬類型户敬,如:length、count等表示數(shù)字類型睁本;而包含name尿庐、title表示為字符串類型。
4)例如:

// 好的命名方式
let maxCount = 10;
let tableTitle = 'LoginTable';
// 不好的命名方式
let setCount = 10;
let getTitle = 'LoginTable';
2. 常量

1)命名方法:名稱全部大寫添履。
2)命名規(guī)范:使用大寫字母和下劃線來組合命名屁倔,下劃線用以分割單詞。
3)例如:

const MAX_COUNT = 10;
const URL = 'http://www.foreverz.com';
3. 函數(shù)

1)命名方法:小駝峰式命名法暮胧。
2)命名規(guī)范:前綴應(yīng)當為動詞锐借。
3)命名建議:可使用常見動詞約定。

【can】判斷是否可執(zhí)行某個動作(權(quán)限)往衷,函數(shù)返回一個布爾值钞翔,true:可執(zhí)行;false:不可執(zhí)行
【has】判斷是否含有某個值席舍,函數(shù)返回一個布爾值布轿,true:含有此值;false:不含有此值
【is】判斷是否為某個值来颤,函數(shù)返回一個布爾值汰扭,true:為某個值;false:不為某個值
【get】獲取某個值福铅,函數(shù)返回一個非布爾值
【set】設(shè)置某個值萝毛,無返回值、返回是否設(shè)置成功或者返回鏈式對象
【load】 加載某些數(shù)據(jù)滑黔,無返回值或者返回是否加載完成的結(jié)果

4)例如:

// 是否可閱讀
function canRead(): boolean {
  return true;
}
// 獲取名稱
function getName(): string {
  return this.name;
}
4. 類 & 構(gòu)造函數(shù)

1)命名方法:大駝峰式命名法笆包,首字母大寫。
2)命名規(guī)范:前綴為名稱略荡。

class Person {
  public name: string;
  constructor(name) {
    this.name = name;
  }
}
const person = new Person('mevyn');
5. 類的成員

類的成員包含:
1)公共屬性和方法:跟變量和函數(shù)的命名一樣庵佣。
2)私有屬性和方法:前綴為_(下劃線),后面跟公共屬性和方法一樣的命名方式汛兜。

class Person {
  private _name: string;
  private _age: number
  constructor() { }
  // 公共方法
  getName() {
    return this._name;
  }
  // 公共方法
  setName(name) {
    this._name = name;
  }

  // 私有方法
  _setAge(age){
    this._age = age
  }
}
const person = new Person();
person.setName('mervyn');
person.getName(); // ->mervyn

二巴粪、注釋規(guī)范

Javascript支持三種不同類型的注釋:行內(nèi)注釋、單行注釋和多行注釋:

1. 行內(nèi)注釋

1)說明:行內(nèi)注釋以兩個斜線開始,以行尾結(jié)束验毡。
2)語法:code // 這是行內(nèi)注釋
3)使用方式://(雙斜線)與代碼之間保留一個空格衡创,并且//(雙斜線)與注釋文字之間保留一個空格。
4)命名建議:

// 用來顯示一個解釋的評論 
// -> 用來顯示表達式的結(jié)果
// >用來顯示 console 的輸出結(jié)果

5)例如:

function test() { // 測試函數(shù)
  console.log('Hello World!'); // >Hello World!
  return 3 + 2; // ->5
}
2. 單行注釋

1)說明:單行注釋以兩個斜線開始晶通,以行尾結(jié)束璃氢。
2)語法:// 這是單行注釋
3)使用方式:單獨一行://(雙斜線)與注釋文字之間保留一個空格。
4)例如:

// 調(diào)用了一個函數(shù)狮辽;1)單獨在一行
setTitle();
3. 多行注釋

1)說明:以 /*開頭一也,*/ 結(jié)尾
2)語法:/* 注釋說明 */
3)使用方法:若開始/*和結(jié)束*/都在一行,推薦采用單行注釋喉脖。若至少三行注釋時椰苟,第一行為/*,最后行為*/树叽,其他行以開始舆蝴,并且注釋文字與保留一個空格。
4)例如:

/*
* 代碼執(zhí)行到這里后會調(diào)用setTitle()函數(shù)
* setTitle():設(shè)置title的值
*/
setTitle();
4. 函數(shù)(方法)注釋

1)說明:函數(shù)(方法)注釋也是多行注釋的一種题诵,但是包含了特殊的注釋要求洁仗,參照JSDoc
2)語法:
/**
* 函數(shù)說明
* @關(guān)鍵字
*/
3)常用注釋關(guān)鍵字:(只列出一部分,并不是全部)

注釋名 語法 含義 示例
@param @param 參數(shù)名 {參數(shù)類型} 描述信息 描述參數(shù)的信息 @param name { String } 傳入名稱
@return @return {返回類型} 描述信息 描述返回值的信息 @return { Boolean } true:可執(zhí)行;false:不可執(zhí)行
@author @author 作者信息 [附屬信息:如郵箱性锭、日期] 描述此函數(shù)作者的信息 @author 張三 2015/07/21
@version @version XX.XX.XX 描述此函數(shù)的版本號 @version 1.0.3
@example @example 示例代碼 演示函數(shù)的使用 @example setTitle(‘測試’)

4)例如:

/**
* 合并Grid的行
* @param grid {Ext.Grid.Panel} 需要合并的Grid
* @param cols {Array} 需要合并列的Index(序號)數(shù)組赠潦;從0開始計數(shù),序號也包含草冈。
* @param isAllSome {Boolean} :是否2個tr的cols必須完成一樣才能進行合并她奥。true:完成一樣;false(默認):不完全一樣
* @return void
* @author polk6 2015/07/21 
* @example
* _________________                             _________________
* |  年齡 |  姓名 |                             |  年齡 |  姓名 |
* -----------------      mergeCells(grid,[0])   -----------------
* |  18   |  張三 |              =>             |       |  張三 |
* -----------------                             -  18   ---------
* |  18   |  王五 |                             |       |  王五 |
* -----------------                             -----------------
*/
function mergeCells(grid: Ext.Grid.Panel, cols: Number[], isAllSome: boolean = false) {
  // Do Something
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末怎棱,一起剝皮案震驚了整個濱河市哩俭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拳恋,老刑警劉巖凡资,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異诅岩,居然都是意外死亡,警方通過查閱死者的電腦和手機带膜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門吩谦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人膝藕,你說我怎么就攤上這事式廷。” “怎么了芭挽?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵滑废,是天一觀的道長蝗肪。 經(jīng)常有香客問我,道長蠕趁,這世上最難降的妖魔是什么薛闪? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮俺陋,結(jié)果婚禮上豁延,老公的妹妹穿的比我還像新娘。我一直安慰自己腊状,他們只是感情好诱咏,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著缴挖,像睡著了一般袋狞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上映屋,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天苟鸯,我揣著相機與錄音,去河邊找鬼秧荆。 笑死倔毙,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的乙濒。 我是一名探鬼主播陕赃,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼颁股!你這毒婦竟也來了么库?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤甘有,失蹤者是張志新(化名)和其女友劉穎诉儒,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體亏掀,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡忱反,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了滤愕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片温算。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖间影,靈堂內(nèi)的尸體忽然破棺而出注竿,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布巩割,位于F島的核電站裙顽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏宣谈。R本人自食惡果不足惜愈犹,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蒲祈。 院中可真熱鬧甘萧,春花似錦、人聲如沸梆掸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酸钦。三九已至怪得,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間卑硫,已是汗流浹背徒恋。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留欢伏,地道東北人入挣。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像硝拧,于是被迫代替她去往敵國和親径筏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容