開(kāi)發(fā)過(guò)程中應(yīng)該遵守哪些編碼規(guī)范和class命名規(guī)范闲昭?

一陌选、背景介紹

為什么要遵守編碼規(guī)范?

1沥曹、好的編碼規(guī)范可以盡可能的減少一個(gè)軟件的維護(hù)成本,并且?guī)缀鯖](méi)有任何一個(gè)軟件葵擎,在其整個(gè)生命周期中胳蛮,均由最初的開(kāi)發(fā)人員來(lái)維護(hù);

2慧脱、好的編碼規(guī)范可以改善軟件的可讀性渺绒,可以讓開(kāi)發(fā)人員盡快而徹底地理解新的代碼;

3菱鸥、好的編碼規(guī)范可以最大限度的提高團(tuán)隊(duì)開(kāi)發(fā)的合作效率宗兼;

4、長(zhǎng)期的規(guī)范性編碼還可以讓開(kāi)發(fā)人員養(yǎng)成好的編碼習(xí)慣氮采,甚至鍛煉出更加嚴(yán)謹(jǐn)?shù)乃季S殷绍。

二、知識(shí)剖析

基本準(zhǔn)則

符合web標(biāo)準(zhǔn)鹊漠,語(yǔ)義化html主到,結(jié)構(gòu)表現(xiàn)行為分離,兼容性?xún)?yōu)良躯概。頁(yè)面性能方面登钥,代碼要求簡(jiǎn)潔明了有序,盡可能的減小服務(wù)器負(fù)載娶靡,保證最快的解析速度牧牢。

html規(guī)范

1、頁(yè)面的第一行添加標(biāo)準(zhǔn)模式聲明<!DOCTYPE html>

2固蛾、代碼縮進(jìn):tab鍵設(shè)置四個(gè)空格(通常在軟件右下角設(shè)置相應(yīng)空格大薪嶂础)

3、html中除了開(kāi)頭的DOC和'UTF-8'或者h(yuǎn)ead里特殊情況可以大寫(xiě)外艾凯,其他都為小寫(xiě)献幔,css類(lèi)都為小寫(xiě)

4、建議為html根元素指定lang屬性趾诗,從而為文檔設(shè)置正確的語(yǔ)言lang="zh-CN"

5蜡感、不同doctype在不同瀏覽器下會(huì)觸發(fā)不同的渲染模式< meta http-equiv="X-UA-Compatible" content="IE=Edge">

6、非特殊情況下樣式文件必須外鏈至< head >...< /head>之間;非特殊情況下JavaScript文件必須外鏈至頁(yè)面底部

7恃泪、盡可能減少div嵌套

8郑兴、在頁(yè)面中盡量避免使用style屬性,即style="…";寫(xiě)在相應(yīng)的樣式文件中

9、對(duì)于屬性的定義贝乎,確保全部使用雙引號(hào)情连,絕不要使用單引號(hào)

10、背景圖片請(qǐng)盡可能使用sprite技術(shù),減小http請(qǐng)求

11览效、給區(qū)塊代碼及重要功能(比如循環(huán))加上注釋,方便后臺(tái)添加功能

12却舀、不要使用@import,與<link>標(biāo)簽相比,@import指令要慢很多,不光增加了額外的請(qǐng)求次數(shù),還會(huì)導(dǎo)致不可預(yù)料的問(wèn)題虫几。

CSS規(guī)范

排版規(guī)范

1、如果是在html中寫(xiě)內(nèi)聯(lián)的css挽拔,則必須寫(xiě)成單行

2辆脸、每一條規(guī)則的大括號(hào){前后加空格

3、屬性名冒號(hào)之前不加空格螃诅,冒號(hào)之后加空格

4啡氢、每一個(gè)屬性值后必須添加分號(hào),并且分號(hào)后加空格

5术裸、多個(gè)selector共用一個(gè)樣式集倘是,則多個(gè)selector必須寫(xiě)成多行形式

class命名

1、規(guī)則命名中穗椅,一律采用小寫(xiě)加中劃線的方式辨绊,不允許使用大寫(xiě)字母或_

2奶栖、命名避免使用中文拼音匹表,應(yīng)該采用更簡(jiǎn)明有語(yǔ)義的英文單詞進(jìn)行組合

3、不允許通過(guò)1宣鄙、2袍镀、3等序號(hào)進(jìn)行命名;避免class與id重名

4冻晤、class用于標(biāo)識(shí)某一個(gè)類(lèi)型的對(duì)象苇羡,命名必須言簡(jiǎn)意賅

5、盡可能提高代碼模塊的復(fù)用鼻弧,樣式盡量用組合的方式

6设江、規(guī)則名稱(chēng)中不應(yīng)該包含顏色(red/blue)、定位(left/right)等與具體顯示效果相關(guān)的信息攘轩。應(yīng)該用意義命名叉存,而不是樣式顯示結(jié)果命名

CSS書(shū)寫(xiě)規(guī)范

1CSS有些屬性是可以縮寫(xiě)的,比如padding,margin,font等等度帮,這樣精簡(jiǎn)代碼同時(shí)又能提高用戶(hù)的閱讀體驗(yàn)歼捏。


2去掉小數(shù)點(diǎn)前的“0”


3、簡(jiǎn)寫(xiě)命名——很多用戶(hù)都喜歡簡(jiǎn)寫(xiě)類(lèi)名笨篷,但前提是要讓人看懂你的命名瞳秽。


4、16進(jìn)制顏色代碼縮寫(xiě)——有些顏色代碼是可以縮寫(xiě)的率翅,我們就盡量縮寫(xiě)吧练俐,提高用戶(hù)體驗(yàn)為主。

5冕臭、長(zhǎng)名稱(chēng)或詞組可以使用中橫線來(lái)為選擇器命名腺晾。


6瓢棒、不要隨意使用Id——id在JS是唯一的,不能多次使用丘喻,而使用class類(lèi)選擇器卻可以重復(fù)使用脯宿,另外id的優(yōu)先級(jí)優(yōu)先與class,所以id應(yīng)該按需使用泉粉,而不能濫用连霉。

三、常見(jiàn)問(wèn)題

屬性的聲明應(yīng)該按照什么順序嗡靡?

四跺撼、解決方案

相關(guān)的屬性聲明應(yīng)該以下面的順序分組處理:

1、Positioning位置屬性(position, top, right, z-index, display, float等)

2讨彼、Box model盒模型 (width,height,padding,margin)

3歉井、Typographic排版(font,line-height,letter-spacing,color,text-align等)

4、Visual外觀(background,border等)

Positioning處在第一位哈误,因?yàn)樗梢允挂粋€(gè)元素脫離正常文本流哩至,并且覆蓋盒模型相關(guān)的樣式。盒模型緊跟其后蜜自,因?yàn)樗麤Q定了一個(gè)組件的大小和位置菩貌。

其他屬性只在組件內(nèi)部起作用或者不會(huì)對(duì)前面兩種情況的結(jié)果產(chǎn)生影響,所以他們排在后面重荠。

五箭阶、編碼實(shí)戰(zhàn)

六、擴(kuò)展思考

問(wèn)題:下面四種寫(xiě)法哪個(gè)渲染速度最快戈鲁?

#test .test{}

ul.test{}

#test ul{}

.test{}

“如果單純的ul與.test PK仇参,我還真拿不定誰(shuí)的渲染速度更快些。但是婆殿,一旦牽扯到層級(jí)與標(biāo)簽诈乒,我100%確定,.test這種最直接的命名方式渲染效率是最高的鸣皂∽デ矗”

“CSS的渲染方式是“從右往左”渲染的,就拿#test ul{}舉例寞缝,先渲染頁(yè)面上所有的ul標(biāo)簽癌压,再去尋找id為test的元素。因此上面這個(gè)問(wèn)題荆陆,先渲染頁(yè)面上所有的div滩届,再去尋找其老爸有沒(méi)有id為test的元素。"

所以被啼,CSS命名帜消,只要出現(xiàn)了層級(jí)棠枉,出現(xiàn)了標(biāo)簽,就是一次額外的渲染泡挺,層級(jí)越多辈讶,渲染的開(kāi)銷(xiāo)也就越大,這就是為什么一些前輩的文章會(huì)建議要盡量避免過(guò)深的層級(jí)娄猫。

七贱除、更多討論

討論點(diǎn)一:在上面的問(wèn)題中,如果是使用JavaScript獲取DOM元素媳溺,那么哪種寫(xiě)法速度最快月幌?

討論點(diǎn)二:css命名在什么情況下必須用到層級(jí)?

討論點(diǎn)三:如何減少css的聲明悬蔽?

八扯躺、參考文獻(xiàn)

參考一:推薦大家使用的CSS書(shū)寫(xiě)規(guī)范、順序|設(shè)計(jì)達(dá)人

參考二:精簡(jiǎn)高效的CSS命名準(zhǔn)則/方法——張?chǎng)涡?/a>

參考三:編碼規(guī)范

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蝎困,一起剝皮案震驚了整個(gè)濱河市录语,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌难衰,老刑警劉巖钦无,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逗栽,死亡現(xiàn)場(chǎng)離奇詭異盖袭,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)彼宠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門(mén)鳄虱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人凭峡,你說(shuō)我怎么就攤上這事拙已。” “怎么了摧冀?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵倍踪,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我索昂,道長(zhǎng)建车,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任椒惨,我火速辦了婚禮缤至,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘康谆。我一直安慰自己领斥,他們只是感情好嫉到,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著月洛,像睡著了一般何恶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嚼黔,一...
    開(kāi)封第一講書(shū)人閱讀 49,730評(píng)論 1 289
  • 那天导而,我揣著相機(jī)與錄音,去河邊找鬼隔崎。 笑死今艺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的爵卒。 我是一名探鬼主播虚缎,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼钓株!你這毒婦竟也來(lái)了实牡?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤轴合,失蹤者是張志新(化名)和其女友劉穎创坞,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體受葛,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡题涨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了总滩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纲堵。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖闰渔,靈堂內(nèi)的尸體忽然破棺而出席函,到底是詐尸還是另有隱情,我是刑警寧澤冈涧,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布茂附,位于F島的核電站,受9級(jí)特大地震影響督弓,放射性物質(zhì)發(fā)生泄漏营曼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一咽筋、第九天 我趴在偏房一處隱蔽的房頂上張望溶推。 院中可真熱鬧,春花似錦、人聲如沸蒜危。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)辐赞。三九已至部翘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間响委,已是汗流浹背新思。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赘风,地道東北人夹囚。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像邀窃,于是被迫代替她去往敵國(guó)和親荸哟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容