計算機科學只存在兩個難題:緩存失效和命名。
命名的藝術
“計算機科學只存在兩個難題:緩存失效和命名。” ——Phil KarIton
前言
命名一直是我編程過程中很頭痛的事,有時為了一個恰當的名稱是想了又想,還忍不住Google一下。命名真是一門藝術,好的命名那叫一個高大上。今天總結一些前端命名的規范,梳理一份自己的命名想法,從以下4種代碼風格的命名規范部分獲取靈感:
1. Google JavaScript代碼風格指南
2. Crockford代碼規范
3. Dojo Javascript 編程規范
4. jQuery核心風格指南
PS:未列出來的,代表沒對此種命名做規范。
JavaScript
1. 變量
Google JavaScript代碼風格指南 | 小駝峰命名規則 |
Dojo Javascript 編程規范 | 小駝峰命名規則 |
jQuery核心風格指南 | 小駝峰命名規則 |
這里有一點要澄清的事,網上很多Dojo Javascript 編程規范的資料說”變量名稱必須為小寫字母“,我半天不敢相信,直接找上Dojo官網文檔,里面根本就沒這么說,而是說是混合大小寫(就是小駝峰)。
——所以結論是,變量用”小駝峰命名規則“。
2. 常量
Google JavaScript代碼風格指南 | 大寫字母,單詞間加下划線,例:var SECONDS_IN_A_MINUTE = 60; |
Dojo Javascript 編程規范 | 大寫字母,單詞間加下划線 或 大駝峰命名規則 |
好吧,其實Dojo Javascript 編程規范根本沒說”大寫字母,單詞間加下划線“,只是說了大寫字母,我看得不順眼加的,我就喜歡這種。
——所以結論是,常量用”大寫字母,單詞間加下划線“。
3. 函數
Google JavaScript代碼風格指南 | 小駝峰命名規則,例:functionNamesLikeThis |
Dojo Javascript 編程規范 | 小駝峰命名規則,必須為動詞或者是動詞短語。例:obj.getSomeValue() |
jQuery核心風格指南 | 小駝峰命名規則 |
這一次我非常贊同Dojo Javascript 編程規范命名方式,就必須要是動詞或者是動詞短語。函數也是方法,叫法不同而已。
——所以結論是,函數名用”小駝峰命名規則,必須為動詞或者是動詞短語“。
4. 類
Google JavaScript代碼風格指南 | 大駝峰命名規則,例:ClassNamesLikeThis |
Dojo Javascript 編程規范 | 大駝峰命名規則 |
JavaScript本身沒有類這種東西,只不過是模擬出來的,本質還是個函數。不過命名的確是要不同, 另外構造函數命名跟類相同。
——所以結論是,類名用”大駝峰命名規則“。
5. 枚舉變量
Google JavaScript代碼風格指南 | 大駝峰命名規則,例:EnumNamesLikeThis |
Dojo Javascript 編程規范 | 大駝峰命名規則 |
這個沒什么爭議。
——所以結論是,類名用”大駝峰命名規則“。
CSS
CSS的編寫有幾個准則:
1. 短ID或類命名,但確保他們不要太過隱晦,或直白(如#blue-button)。
2. 大型項目使用前綴,如#xyz-help, .xyz-column(分模塊)。
3. 單詞直接間隔使用”-“(NEC規范文檔里面就是用”-“)。
即使是不用,使用其他駝峰式或下划線,那就必須統一風格,別一會用這用那。
自問自答
1. CSS,class或id的單詞間隔是使用橫杠或者下划線或駝峰式?
我覺得當中選擇了一種,那么整個風格就統一成那種, 不要像風像雲又像雨,什么都用。我建議是用橫杠,看起來舒服一些。
2. 文件名要不要駝峰式,首字母要大寫嗎?
首先文件名必須簡明扼要,別又臭又長。有很多方式:
1. 全部小寫,單詞間用下划線。例: photo_gallery.js
2. 全部小寫,單詞間用橫杠。例: photo-gallery.js
3. 全部小寫,單詞間不使用任何字符分割。例: photogallery.js
4. 小駝峰式。例: photoGallery.js
這個我真沒有確定要用哪一種,哪一種是最靠譜的,但應該是沒有以大寫字母開頭的。
3. 私有變量、函數要用下划線前綴嗎?
Dojo Javascript 編程規范 是規定必須要下划線前綴的,其他規范並沒有要求。而我覺得使用下划線前綴是比較好的,它很大的優點是很明確區分了公共變量和私有變量,一目了然(還有一點淡淡的逼格)。
總結
Crockford代碼規范並沒有對命名規范的說明,興許是我沒找到。相反的,Dojo Javascript 編程規范對於命名規范這部分着實詳盡,里面很多可借鑒地方,我取了一點東西。還有HTML的本身就不建議使用自定義標簽,所以也沒什么命名問題,至於屬性,統一風格就行了。
我在文章里面最常說的是統一風格,現實團隊協作時候,開始能先統一下規范,對整體代碼風格非常有好處的,自己看起來也舒服。最后命名需慎重,盡量簡明扼要、清晰易懂。
參考文獻
1. 《翻譯:谷歌HTML、CSS和JavaScript風格規范》 by 張鑫旭
3. 《Crockford 編程規范》 by 阮一峰
4. 《規范自己的JavaScript書寫 – Dojo Javascript 編程規范》by 彬Go
本文為原創文章,轉載請保留原出處,方便溯源,如有錯誤地方,謝謝指正。