這個 6500 Star 的手冊幫你解決命名難的問題
naming-cheatsheet 是一個命名備忘錄,記錄一些常見的規(guī)范約定,試圖讓命名變得更容易。接下來我們就來介紹下 naming-cheatsheet 提到的一些規(guī)范約定。
使用英語
/*?Bad?*/
const?primerNombre?=?'Gustavo'
const?amigos?=?['Kate',?'John']
/*?Good?*/
const?firstName?=?'Gustavo'
const?friends?=?['Kate',?'John']
不管你喜不喜歡,英語都是編程中的主要語言,幾乎所有的編程語言的語法都是用英語編寫的,以及無數(shù)的文檔和教材也是。通過英語編寫代碼,可以大大提高其通用性。對于我們國內(nèi)開發(fā)者來說,一定要避免拼音甚至是直接的中文命名。
命名約定
選擇一種命名的約定風(fēng)格,并嚴(yán)格遵守它,可以是 camelCase、ParscalCase、snake_case,或者是其他任何的風(fēng)格,最重要的是要保持一致。許多編程語言在命名約定方面都有自己的規(guī)范,可以查看你所用的語言或者在 GitHub 上學(xué)習(xí)一些流行的源代碼。
/*?Bad?*/
const?page_count?=?5
const?shouldUpdate?=?true
/*?Good?*/
const?pageCount?=?5
const?shouldUpdate?=?true
/*?Good?as?well?*/
const?page_count?=?5
const?should_update?=?true
SID原則
命名應(yīng)該簡短、直觀并且具有描述性:
Short:簡短,避免輸入太長;Intuitive:直觀,命名必須自然地閱讀,并且盡可能接近自然語言;Descriptive:以最有效的方式反映其作用或目的。
/*?Bad?*/
const?a?=?5?//?"a"?could?mean?anything
const?isPaginatable?=?a?>?10?//?"Paginatable"?sounds?extremely?unnatural
const?shouldPaginatize?=?a?>?10?//?Made?up?verbs?are?so?much?fun!
/*?Good?*/
const?postCount?=?5
const?hasPagination?=?postCount?>?10
const?shouldPaginate?=?postCount?>?10?//?alternatively
避免過度的簡寫
命名要簡短,但是要避免鉆牛角尖,命名最重要的是要讓人能看懂,過度的簡寫只會降低代碼的可讀性。
/*?Bad?*/
const?onItmClk?=?()?=>?{}
/*?Good?*/
const?onItemClick?=?()?=>?{}
避免上下文重復(fù)
命名不應(yīng)與定義命名的上下文重復(fù),如果不降低命名的可讀性,請務(wù)必從命名中刪除該上下文。
class?MenuItem?{
??/*?Method?name?duplicates?the?context?(which?is?"MenuItem")?*/
??handleMenuItemClick?=?(event)?=>?{?...?}
??/*?Reads?nicely?as?`MenuItem.handleClick()`?*/
??handleClick?=?(event)?=>?{?...?}
}
反映預(yù)期結(jié)果
命名應(yīng)該能反映預(yù)期的結(jié)果。
/*?Bad?*/
const?isEnabled?=?itemCount?>?3
return?
/*?Good?*/
const?isDisabled?=?itemCount?<=?3
return?
更多命名規(guī)范可以參考項目:https://github.com/kettanaito/naming-cheatsheet
評論
圖片
表情
