JS是一門極其靈活的腳本語言墅诡,我認為其靈活性在迅捷開發(fā)中有極大的優(yōu)越性竿秆。極簡主義代碼規(guī)范放大了這一優(yōu)越性规求,使得小應用、小模塊的開發(fā)盡可能的清晰快速佑女,同時也不對團隊協(xié)作造成特別巨大的影響记靡。
極簡主義代碼規(guī)范的基本方案是:能省則省,即:如果存在語法糖可以簡寫团驱,則必須簡寫摸吠。
例子
const isPrime = x => {
for (let i = 1; i <= Math.sqrt(x); i++) {
if (x % i === 0) return false
}
return true
}
const add = (x, y) => x + y
// show codes
function main () {
const obj = { a: 1, b: 2, add }
const anotherObject = {
hello: 'world!',
hi: 'haha',
isPrime, // only property name
}
console.log(obj.add(obj.a, obj.b))
if (isPrime(5)) {
console.log('prime')
} else {
console.log('not prime')
}
}
基本
2個空格縮進(與HTML,CSS一致)嚎花,必須正確縮進
分號寸痢、逗號之后必須空格或轉行
左大括號不轉行
左大括號之前一定有空格
若左右大括號在一行,則大括號內側必須有空格紊选。例如
const obj = { a: 1, b: 2 }
指令(例如if轿腺、return等)后一定有空格
雙目運算符前后必須有空格
非必要不寫分號(無行末分號)
使用單引號表示字符串(單引號比雙引號簡單)
變量
不使用var两嘴,沒有顯式賦值的變量必須用const,其余用let
允許多個變量共用聲明和初始化語句族壳,逗號隔開憔辫,但不能太長。例如:
const a = 1, b = 2
變量名原則上使用小駝峰命名法(首字母小寫仿荆,其余單詞首字母大寫)贰您,例如userInfo
局部變量或臨時變量允許簡寫變量名,例如在一個小函數中允許使用p指代period
非特殊場景下拢操,變量名不得使用下劃線
對象內容很短時锦亦,可以在一行內完成
對象的最后一個成員后,不得添加逗號
對象成員變量賦值時令境,若屬性名稱和讀取的變量名一致杠园,則必須簡寫。即
const obj = { token: token }必須簡寫為const obj = { token }
控制
if舔庶、else抛蚁、for的執(zhí)行語句塊很短時,可以在行內完成惕橙,不必大括號展開瞧甩。若換行,必須大括號展開弥鹦。
else應該與if的右大括號在同一行肚逸,此時else前后都有空格,即} else {彬坏。
盡可能使用邏輯截斷break朦促、return等,減少else的使用栓始。
函數
函數定義時(函數頭部)參數表前后都有空格思灰。例如:
function isPrime (x) {}
函數調用時,函數名和參數表之間沒有空格混滔。例如isPrime(5)
若箭頭函數有且僅有一個參數洒疚,則參數表的小括號可以省略∨饔欤基于能省則省的原則油湖,此時小括號必須省略。例如:
const print = msg => {
console.log(msg)
}
若箭頭函數直接返回計算值领跛,則必須省略為如下形式:
const sqr = x => x * x
注釋
注釋不要太多乏德,不要啰嗦,寫有價值、代碼里面沒有的內容喊括。
注釋雙斜杠后有一個空格// this is a comment
若所在行有代碼胧瓜,雙斜杠前也有空格
原則上使用英文注釋
對于接口函數等需要詳細注釋的內容,參考具體的接口文檔要求