開始寫代碼以來,我們發(fā)現(xiàn)最痛苦的不是深?yuàn)W的算法、不是復(fù)雜排版、也不是酷炫的動(dòng)畫,而是最最簡單的命名!漸漸發(fā)現(xiàn)開發(fā)過程中我們60%的時(shí)間都花在了給各種各樣的東西起名字:
有時(shí)真的會(huì)被一波一波的名字攻擊的頭暈?zāi)X脹,索性隨便起個(gè)名字了事。但這往往卻是自己給自己挖坑的開始。這在一個(gè)人的小項(xiàng)目中看起來并沒有什么影響,但到了大型項(xiàng)目的多人協(xié)作和代碼維護(hù)時(shí),其弊端就開始顯現(xiàn)。糟糕的命名往往給代碼帶來了一堵無形的墻,讓我們必須深入代碼去研究代碼具有的行為,增加了理解代碼的時(shí)間,也增加了代碼維護(hù)的難度。
一個(gè)正確的命名可以讓你更容易地理解代碼的程序,好的命名可以消除二義性,消除誤解,并且說明真實(shí)的意圖,甚至可以讓你有清新的氣息以讓你更能吸引異性。--陳皓(左耳朵耗子)
總之,變量名是編程的第一步,第一步走好了,后面才走得好。試想,我們在看一段一目了然的代碼時(shí)有多么的輕松愉悅~
為此我總結(jié)了幾條關(guān)于命名的指導(dǎo)原則,希望能對(duì)自己和大家的命名設(shè)計(jì)帶來幫助_
黃金法則- 花一些時(shí)間去思考去權(quán)衡一下你的變量名
當(dāng)你設(shè)計(jì)好一個(gè)的變量名一個(gè)函數(shù)名的時(shí)候,別著急去使用他,停下來,想一想,這個(gè)變量名是否合適,是否還有更好的?也許你正在使用的是一個(gè)很不好的變量名。有些時(shí)候,需要我們權(quán)衡利弊一下,可能還要去和同事討論一下。
接下來是一些具體的原則
// 反例
temp
button1
button2
a, b, c
統(tǒng)一
無論如何,至少在同一個(gè)項(xiàng)目中保持統(tǒng)一的命名規(guī)范。
分割標(biāo)識(shí)符中的單詞
不管你用什么命名方式,單詞還是要分一下,方便閱讀:
JS方法名(駝峰式): someFunction
css類名 : some-class
靜態(tài)變量: SOME_FUNCTION
接下來是我總結(jié)的一下具體實(shí)用的命名規(guī)范,希望和大家一起探討
文件名要全部小寫, 可以包含下劃線 ( _ ) 或連字符 (-). 按項(xiàng)目約定來. 如果并沒有項(xiàng)目約定,“ _ ” 更好。
以下是引用** 視覺 **的圖片命名規(guī)則,視覺和前端er們同時(shí)遵守會(huì)幫助我們減少很多的工作量,發(fā)現(xiàn)合作是如此的愉快~_
關(guān)于** 切圖命名 **規(guī)則:
模塊_類別_功能_狀態(tài).png
舉個(gè)栗子: nav_button_search_default.png
名稱|命名|名稱|命名
:---------------|:---------------|:---------------|:--------------
搜索 |search|按鈕|button(btn)
菜單欄|tab |背景 |BG
用戶|user|刷新|refresh
圖片|image|廣告|banner
注冊|register|鏈接|link
導(dǎo)航欄|nav|圖標(biāo)|icon
個(gè)人資料|profile|彈出|pop
刪除|delete|下載|download
登陸|login|標(biāo)題|title
注釋|note|返回|back
編輯|edit|內(nèi)容|content
左、右、中|left、right、center|標(biāo)志|logo
提示信息|msg| |
狀態(tài)(選中)|selected|狀態(tài)(不可點(diǎn))|disabled
狀態(tài)(默認(rèn))|default|狀態(tài)(按下)|pressed
HTML與CSS最佳實(shí)踐中重要的一條就是怎么來寫出有語義可讀性的標(biāo)記。好的語義即是你使用了合適的HTML標(biāo)簽與CSS的類名來傳達(dá)出你想表達(dá)的結(jié)構(gòu)含義。
譬如 h1 標(biāo)簽會(huì)告訴我們里面包裹的是一些很重要的標(biāo)題信息,另一個(gè)例子就是*footer *標(biāo)簽,會(huì)直截了當(dāng)?shù)馗阏f,這里面是包含一些頁腳信息。
- 盡可能少的使用無語義的標(biāo)簽div和span;
<header> <hgroup> <h1>網(wǎng)站標(biāo)題</h1> <h1>網(wǎng)站副標(biāo)題</h1> </hgroup> </header>
<footer> COPYRIGHT@小北</footer>
<nav> <ul> <li>HTML 5</li> <li>CSS3</li> <li>JavaScript</li> </ul> </nav>
<article> <p>內(nèi)容</p> <aside> <h1>作者簡介</h1> <p>萱萱,前端一枚</p> </aside> </article>
<section> <h1>section是啥?</h1> <article> <h2>關(guān)于section</h1> <p>section的介紹</p> <section> <h3>關(guān)于其他</h3> <p>關(guān)于其他section的介紹</p> </section> </article> </section>
article、nav、aside可以理解為特殊的section,所以如果可以用article、nav、aside就不要用section,沒實(shí)際意義的就用div
<article> <h1>一篇文章</h1> <p>文章內(nèi)容..</p> <footer> <p><small>版權(quán):html5jscss網(wǎng)所屬,作者:小北</small></p> </footer> </article>
article使用注意:
接下來是css中成“噸”的class的命名
把id留給后臺(tái)開發(fā)和JS使用,除此之外頁面的page id(如首頁的外層需要一個(gè)ID id='pageIndex'),頁面結(jié)構(gòu)(header main footer)允許用id命名(ID命名建議使用駝峰命名)。其他禁止id使用在樣式表CSS命名中,一律使用class命名。
ID名稱 | 命名 | ID名稱 | 命名 |
---|---|---|---|
頭部 | header | 主體 | main |
腳部 | footer | 容器 | wrapper |
側(cè)欄 | sideBar | 欄目 | column |
布局 | layout |
2.模塊結(jié)構(gòu)命名
Class名稱|命名|Class名稱|命名
:---------------|:---------------|:---------------|:-- -------------
模塊(如:新聞模塊) |mod (mod-news) |標(biāo)題欄 |title
內(nèi)容 |content |次級(jí)內(nèi)容 |sub-content
3.導(dǎo)航結(jié)構(gòu)命名
Class名稱 | 命名 | Class名稱 | 命名 |
---|---|---|---|
導(dǎo)航 | nav | 主導(dǎo)航 | main-nav |
子導(dǎo)航 | sub-nav | 頂部導(dǎo)航 | top-nav |
菜單 | menu | 子菜單 | sub-menu |
4.一般元素命名
Class名稱 | 命名 | Class名稱 | 命名 |
---|---|---|---|
二級(jí) | sub | 面包屑 | breadcrumb |
標(biāo)志 | logo | 廣告 | banner |
登陸 | login | 注冊 | register/reg |
搜索 | search | 加入 | join |
狀態(tài) | status | 按鈕 | btn |
滾動(dòng) | scroll | 標(biāo)簽頁 | tab |
文章列表 | list | 短消息 | msg/message |
當(dāng)前的 | current | 提示小技巧 | tips |
圖標(biāo) | icon | 注釋 | note |
指南 | guide | 服務(wù) | service |
熱點(diǎn) | hot | 新聞 | news |
下載 | download | 投票 | vote |
合作伙伴 | partner | 友情鏈接 | link |
版權(quán) | copyright | 演示 | demo |
下拉框 | select | 摘要 | summary |
翻頁 | pages | 主題風(fēng)格 | themes |
設(shè)置 | set | 成功 | suc |
按鈕 | btn | 文本 | txt |
顏色 | color/c | 背景 | bg |
邊框 | border/bor | 居中 | center |
上 | top/t | 下 | bottom/b |
左 | left/l | 右 | right/r |
添加 | add | 刪除 | del |
間隔 | sp | 段落 | p |
彈出層 | pop | 公共 | global/gb |
操作 | op | 密碼 | pwd |
透明 | tran | 信息 | info |
重點(diǎn) | hit | 預(yù)覽 | pvw |
單行輸入框 | input | 首頁 | index |
日志 | blog | 相冊 | photo |
留言板 | guestbook | 用戶 | user |
確認(rèn) | confirm | 取消 | cancel |
報(bào)錯(cuò) | error |
5.全局皮膚樣式
文字顏色(命名空間text-xxx)
text-c1, text-c2,text-c3……
背景顏色(命名空間bg -xxx)
bg-c1,bg-c2,bg-c3……
邊框顏色(命名空間border-xxx)
border-c1,border-c2,border-c3……
JS的變量和方法命名除了遵循上文的指導(dǎo)原則外最重要的是采用駝峰式命名,保證見文知義。
聯(lián)系客服