摘要:計算機(jī)科學(xué)只存在兩個難題:緩存失效和命名。” ——Phil KarIton前言命名一直是我編程過程中很頭痛的事,有時為了一個恰當(dāng)?shù)拿Q是想了又想,還忍不住Google一下。命名真是一門藝術(shù),好的命名那叫一個高大上。今天總結(jié)一些前端命名的規(guī)范,梳理一份自己的命名想法,從以下4種代碼風(fēng)格的命名規(guī)范部分獲取靈感:1. Google JavaScript代碼風(fēng)格指南2. Crockfo
計算機(jī)科學(xué)只存在兩個難題:緩存失效和命名?!?——Phil KarIton
前言
命名一直是我編程過程中很頭痛的事,有時為了一個恰當(dāng)?shù)拿Q是想了又想,還忍不住Google一下。命名真是一門藝術(shù),好的命名那叫一個高大上。今天總結(jié)一些前端命名的規(guī)范,梳理一份自己的命名想法,從以下4種代碼風(fēng)格的命名規(guī)范部分獲取靈感:
1. Google JavaScript代碼風(fēng)格指南
2. Crockford代碼規(guī)范
3. Dojo Javascript 編程規(guī)范
4. jQuery核心風(fēng)格指南
PS:未列出來的,代表沒對此種命名做規(guī)范。
JavaScript
1. 變量
這里有一點要澄清的事,網(wǎng)上很多Dojo Javascript 編程規(guī)范的資料說”變量名稱必須為小寫字母“,我半天不敢相信,直接找上Dojo官網(wǎng)文檔,里面根本就沒這么說,而是說是混合大小寫(就是小駝峰)。
——所以結(jié)論是,變量用”小駝峰命名規(guī)則“。
2. 常量
好吧,其實Dojo Javascript 編程規(guī)范根本沒說”大寫字母,單詞間加下劃線“,只是說了大寫字母,我看得不順眼加的,我就喜歡這種。
——所以結(jié)論是,常量用”大寫字母,單詞間加下劃線“。
3. 函數(shù)
這一次我非常贊同Dojo Javascript 編程規(guī)范命名方式,就必須要是動詞或者是動詞短語。函數(shù)也是方法,叫法不同而已。
——所以結(jié)論是,函數(shù)名用”小駝峰命名規(guī)則,必須為動詞或者是動詞短語“。
4. 類
JavaScript本身沒有類這種東西,只不過是模擬出來的,本質(zhì)還是個函數(shù)。不過命名的確是要不同, 另外構(gòu)造函數(shù)命名跟類相同。
——所以結(jié)論是,類名用”大駝峰命名規(guī)則“。
5. 枚舉變量
這個沒什么爭議。
——所以結(jié)論是,類名用”大駝峰命名規(guī)則“。
CSS
CSS的編寫有幾個準(zhǔn)則:
1. 短ID或類命名,但確保他們不要太過隱晦,或直白(如#blue-button)。
2. 大型項目使用前綴,如#xyz-help, .xyz-column(分模塊)。
3. 單詞直接間隔使用”-“(NEC規(guī)范文檔里面就是用”-“)。
即使是不用,使用其他駝峰式或下劃線,那就必須統(tǒng)一風(fēng)格,別一會用這用那。
自問自答
1. CSS,class或id的單詞間隔是使用橫杠或者下劃線或駝峰式?
我覺得當(dāng)中選擇了一種,那么整個風(fēng)格就統(tǒng)一成那種, 不要像風(fēng)像云又像雨,什么都用。我建議是用橫杠,看起來舒服一些。
2. 文件名要不要駝峰式,首字母要大寫嗎?
首先文件名必須簡明扼要,別又臭又長。有很多方式:
1. 全部小寫,單詞間用下劃線。例: photo_gallery.js
2. 全部小寫,單詞間用橫杠。例: photo-gallery.js
3. 全部小寫,單詞間不使用任何字符分割。例: photogallery.js
4. 小駝峰式。例: photoGallery.js
這個我真沒有確定要用哪一種,哪一種是最靠譜的,但應(yīng)該是沒有以大寫字母開頭的。
3. 私有變量、函數(shù)要用下劃線前綴嗎?
Dojo Javascript 編程規(guī)范 是規(guī)定必須要下劃線前綴的,其他規(guī)范并沒有要求。而我覺得使用下劃線前綴是比較好的,它很大的優(yōu)點是很明確區(qū)分了公共變量和私有變量,一目了然(還有一點淡淡的逼格)。
總結(jié)
Crockford代碼規(guī)范并沒有對命名規(guī)范的說明,興許是我沒找到。相反的,Dojo Javascript 編程規(guī)范對于命名規(guī)范這部分著實詳盡,里面很多可借鑒地方,我取了一點東西。還有HTML的本身就不建議使用自定義標(biāo)簽,所以也沒什么命名問題,至于屬性,統(tǒng)一風(fēng)格就行了。
我在文章里面最常說的是統(tǒng)一風(fēng)格,現(xiàn)實團(tuán)隊協(xié)作時候,開始能先統(tǒng)一下規(guī)范,對整體代碼風(fēng)格非常有好處的,自己看起來也舒服。最后命名需慎重,盡量簡明扼要、清晰易懂。