目的:總結(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
}