前端命名規(guī)范-----學(xué)習(xí)

1.前言

如果說計(jì)算機(jī)科學(xué)只存在兩個(gè)難題:緩存失效和命名。那么我就覺得命名的難點(diǎn)只有兩個(gè):詞匯量和堅(jiān)持貫徹執(zhí)行制定的規(guī)范蒂培。

最近在知乎上看到這個(gè):作為程序員休玩,有沒有讓你感到既無語又崩潰的程序命名瑟捣?末荐。頓時(shí)感慨萬千,因?yàn)槊麑?duì)于程序員來說是就是一個(gè)難題勃救,有時(shí)候因?yàn)槊郑赡軙?huì)引起別人的誤導(dǎo),疑惑等蒙秒,對(duì)開發(fā)效率勃黍,項(xiàng)目的質(zhì)量影響可大可小。今天晕讲,也分享下最近自己在使用的命名習(xí)慣覆获,當(dāng)然只是個(gè)人習(xí)慣。更希望能在評(píng)論區(qū)看到大家推薦的命名方式瓢省,互相學(xué)習(xí)弄息,交流。

關(guān)于整篇內(nèi)容勤婚,主要提及兩個(gè):

1.如何寫出讓別人容易讀懂的命名

2.針對(duì)不同的對(duì)象摹量,使用對(duì)象命名的格式

2.盤點(diǎn)那些難以讀懂的命名

首先,先盤點(diǎn)下有哪些命名的一些方式是很難讓別人讀懂的蛔六。這些情況荆永,大家看到就應(yīng)該在開發(fā)上盡量避免下。

2-1.單詞拼寫錯(cuò)誤

舉個(gè)例子

//提交表單(把 Form 寫成了 From )submitFrom(){...}復(fù)制代碼

之前寫文章也有說過国章,單詞拼寫正確可以說是一個(gè)底線了。如果單詞拼寫錯(cuò)誤豆村,比如 from 和 form 都是正確的單詞液兽,但完全不一樣的意思,如果把 from 寫成 form ,以后讀代碼的人(也可能是你自己)四啰,很有可能會(huì)懵逼宁玫。

2-2.中英文混用

單詞拼寫錯(cuò)誤會(huì)誤導(dǎo)別人,中英文混用這個(gè)命名方式就可以說讓人云里霧里的感覺柑晒,不會(huì)誤導(dǎo)欧瘪,只會(huì)看不懂。

比如下面

letchanpinList=[];復(fù)制代碼

這個(gè)變量名匙赞,一開始不知道是什么佛掖,注釋也沒有,完全懵逼涌庭。后來看了需求芥被,才知道這個(gè)的意思是:產(chǎn)品列表。

2-3.以1-9坐榆,a-z命名

這個(gè)情況相信大家都會(huì)遇到過拴魄,比如頁面上有幾個(gè)按鈕,有人命名成? btn1席镀,btn2匹中,btn3,btn4...豪诲≈霸保或者 btnA,btnB跛溉,btnC焊切,btnD。這樣的命名看似簡(jiǎn)單芳室,但實(shí)際上從這些命名里面讀取不到任何信息专肪,以后會(huì)可能會(huì)痛苦些。

2-4.混用命名格式

這個(gè)可以說沒那么可恨堪侯,但是看著就別扭嚎尤,比如表示評(píng)論列表,有地方這樣命名:comments伍宦,另一個(gè)地方這樣命名: comment-list芽死,還有這樣命名: commentList。幾種規(guī)范混在一起次洼,就感覺不規(guī)范了关贵。

還用一種雖然一般不會(huì)出現(xiàn)的情況,也遇見了卖毁。比如一個(gè)地方有添加供應(yīng)商的按鈕揖曾,命名是:addSupplier 。在另一個(gè)地方也有相同的功能按鈕,完全一樣炭剪,結(jié)果命名是:addSupplierInfo 练链。當(dāng)時(shí)就以為這兩個(gè)不是同一個(gè)功能,造成了誤會(huì)奴拦。

2-5.強(qiáng)制中文拼音命名

有些名詞媒鼓,被中國人創(chuàng)造出來(淘寶-taobao,微博-weibo)错妖,沒有英文翻譯的绿鸣。就可以用中文拼音命名,其他的都建議用英文站玄。

但是偏偏有時(shí)候就算有英文的單詞枚驻,有些人還是用中文拼音命名,比如一個(gè)文章列表株旷,很多人就是沒用 articleList再登,直接寫 wenzhangliebiao。但是看的時(shí)候晾剖,一定會(huì)懵逼一會(huì)锉矢。

2-6.強(qiáng)制簡(jiǎn)寫

簡(jiǎn)介雖然可以讓命名看著更加的簡(jiǎn)潔,但是有時(shí)卻會(huì)遇上強(qiáng)制簡(jiǎn)寫的命名齿尽,比如一個(gè)函數(shù)是提交用戶評(píng)論信息的功能沽损。原本以為是:handleCommentSubmit/submitComment/publishComment。結(jié)果后來一看--tjyhpl循头。強(qiáng)制簡(jiǎn)寫還是用拼音的簡(jiǎn)寫绵估,后來讓他改一下,改成了ac卡骂。后來一問才知道他想表達(dá)的意思是 addComment 国裳,當(dāng)時(shí)差點(diǎn)動(dòng)手了。

2-7.單復(fù)數(shù)不分

這個(gè)情況不算惡劣全跨,只算是一種規(guī)范吧缝左,之前有分別有兩個(gè)操作函數(shù),一個(gè)是下載全部訂單數(shù)據(jù)浓若,一個(gè)是下載當(dāng)前訂單數(shù)據(jù)渺杉。但是兩個(gè)函數(shù)的命名,一個(gè)是downloadOrderData挪钓,另一個(gè)是downloadOrder是越。這樣也產(chǎn)生了一點(diǎn)懵逼感。

面對(duì)這樣的情況诵原,建議還是區(qū)分下單復(fù)數(shù)英妓,downloadOrder挽放,downloadOrderAll/downloadOrderList绍赛。區(qū)分了單復(fù)數(shù)的命名蔓纠,如果有返回值,也可以讓別人大概知道吗蚌,單數(shù)可能就是返回單個(gè)記錄腿倚,復(fù)數(shù)可能返回一個(gè)數(shù)組。

2-8.正反義詞錯(cuò)用

這個(gè)情況同上蚯妇,不算是惡劣敷燎,只能算是不規(guī)范。比如:分別有兩個(gè)操作函數(shù)一個(gè)是顯示彈窗箩言,一個(gè)是關(guān)閉彈窗硬贯。結(jié)果命名上面,一個(gè)是 showEditDialog 陨收。另一個(gè)是 closeEditDialog 饭豹。

上面的案例,show 和 close 务漩,一個(gè)是顯示拄衰,一個(gè)是關(guān)閉,顯然不是正反義詞饵骨。應(yīng)該出現(xiàn)的姿勢(shì)是翘悉,showEditDialog 和 hideEditDialog ,或者 openEditDialog 和 closeEditDialog

2-9.為所欲為的命名

還有其它的搞笑命名居触,在知乎上面看到的情況妖混,別人遇到的情況。大家移步到知乎吧轮洋,這個(gè)不重復(fù)太多制市。

作為程序員,有沒有讓你感到既無語又崩潰的程序命名砖瞧?息堂。

3.命名相關(guān)格式

說完了命名第一個(gè),命名單詞應(yīng)該正確的書寫之后块促。再來說下命名的相關(guān)格式在說自己的命名實(shí)例之前荣堰,先說下不同的命名對(duì)象,命名方式是不一樣的竭翠。具體如下:

待命名對(duì)象推薦名稱

圖片小寫字母振坚,‘-’或者‘_’ 分割

css(class,id)‘-’ 分割

文件,變量小駝峰命名

js類(class)大駝峰命名

常量大寫字母斋扰,‘_’ 分割

臨時(shí)變量渡八,私有變量‘_’ 開頭啃洋,駝峰命名

4.HTML命名

在說命名 HTML 命名之前,先說下布局的三個(gè)概念:模塊( module )和元件( unit )

模塊:各種常見的網(wǎng)頁內(nèi)容模塊屎鳍,通澈曷Γ可以重復(fù)使用的較大的整體,比如導(dǎo)航逮壁、菜單孵坚、幻燈、圖文列表等窥淆。命名前面建議帶有m-

元件:各種常見的網(wǎng)頁內(nèi)容元件卖宠,比如按鈕、標(biāo)題忧饭、輸入框等扛伍。命名前面建議帶有u-

兩者關(guān)系,模塊包含元件词裤,元件組成模塊刺洒。

小小實(shí)例

看到上面的一個(gè)小彈窗。整個(gè)彈窗亚斋,當(dāng)成一個(gè)模塊作媚。可以把標(biāo)題帅刊,提示內(nèi)容纸泡,按鈕當(dāng)做元件。HTML 代碼就如下赖瞒,CSS , JS 代碼就不貼了女揭。模塊就帶m-,元件就帶u-

? ?
? ? ? ?
? ? ? ? ? ?
提示2
? ? ? ? ? ?
這里是提示內(nèi)容2
? ? ? ?
? ? ? ?
? ? ? ? ? ? 確定? ? ? ?
? ?
復(fù)制代碼

至于這樣的寫法有什么優(yōu)劣栏饮,注意事項(xiàng)吧兔,這里就不展開講了,以后再寫文章袍嬉。

5.JavaScript命名

在js命名里面境蔼,應(yīng)該只有四種命名方式:小駝峰(productList),大駝峰(ProductList)伺通,大寫字符箍土,下劃線分割(PRODUCT_LIST),下劃線開頭+小駝峰(_productList)

5-1.按照類型命名

5-1-1.小駝峰

在js寫法里面罐监,小駝峰命名應(yīng)該是最多的一種吴藻。變量,函數(shù)一般而言都是使用小駝峰命名弓柱。

//登錄處理函數(shù)lethandleLogin=function(){}復(fù)制代碼

5-1-2.大駝峰

在es6之前沟堡,js還沒有class的概念侧但,但是也組織不了開發(fā)者模擬class。現(xiàn)在有了class航罗,自然而然禀横,class的命名規(guī)范就更離不開了。關(guān)于class的命名規(guī)范伤哺,應(yīng)該很多人都是習(xí)慣用大駝峰命名燕侠。

//創(chuàng)建一個(gè)類class Person{? ? //...}復(fù)制代碼

5-1-3.常量

常量建議還是使用大寫字符+下劃線命名者祖。

//配置最大金額const PRICE_MAX=10000;復(fù)制代碼

5-1-4.私有變量

私有變量相對(duì)于外面作用域而言立莉,為了區(qū)分變量是公用的,還是私有的七问。建議命名上面就做下區(qū)分蜓耻,私有變量建議使用下劃線開頭+小駝峰命名方式。

letmyObj={? ? name:'守候',setName(){? ? ? ? //保存當(dāng)前的thislet_this=this;setTimeOut(function(){? ? ? ? ? ? alert(_this.name)? ? ? ? },1000)? ? }}復(fù)制代碼

5-2.按職責(zé)命名

函數(shù)命名械巡,一般都是動(dòng)詞開頭刹淌。

5-2-1.獲取值

如果函數(shù)是為了獲取值(函數(shù)最后會(huì)返回一個(gè)值的),函數(shù)前面建議帶有g(shù)et讥耗。

//根據(jù) ID 獲取用戶信息functiongetUserInfo(id){? ? }復(fù)制代碼

5-2-2.設(shè)置值

如果函數(shù)是為了設(shè)置值(函數(shù)最后會(huì)返回一個(gè)值的)有勾,函數(shù)執(zhí)行就是為了給某一個(gè)變量賦值,函數(shù)前面建議帶有set古程。

//設(shè)置用戶信息functionsetUserInfo(){? ? }復(fù)制代碼

5-2-3.處理動(dòng)作

如果函數(shù)是為了處理一些操作蔼卡,比如登錄,注冊(cè)挣磨,渲染列表等雇逞。那么就建議命名前面帶有handle。

//分頁操作handleChangeCurrent(val){? ? }//注冊(cè)操作handleRegister(){? ? }復(fù)制代碼

這個(gè)處理動(dòng)作茁裙,有些開發(fā)者也是習(xí)慣直接以動(dòng)作開始塘砸。openDialog,closeDialog等晤锥。

6.目錄掉蔬,文件,圖片命名

6-1目錄矾瘾,文件名稱的命名規(guī)則

統(tǒng)一小駝峰命名法女轿。

如下例子:

目錄,文件建議命名

首頁index霜威,index.html

搜索頁面search谈喳,search.html

產(chǎn)品列表productList,productList.html

產(chǎn)品詳細(xì)頁面productDetail戈泼,productDetail.html

新聞列表newslist婿禽,newslist.html

新聞詳細(xì)頁面newsdetail赏僧,newsdetail.html

評(píng)論列表commentList,commentList.html

關(guān)于我們about扭倾,about.html

如果發(fā)現(xiàn)名稱過長(zhǎng)淀零,可以在團(tuán)隊(duì)約定好簡(jiǎn)寫格式:比如 product 簡(jiǎn)寫成 pro 。

6-2圖片命名規(guī)范

如果是通用性質(zhì)的圖片膛壹,例如LOGO驾中,菜單,側(cè)邊欄模聋,背景等肩民,就直接使用小寫字母命名。比如:logo.jpg 链方,menu.jpg持痰,aside.jpg,bg.jpg祟蚀。

如果不是通用的圖片工窍,就建議根據(jù)類別-模塊-功能的格式。使用小寫字母前酿,‘-’或者‘_’分割患雏,如下例子:

圖片名稱意義

btn-submit-comment.jpg提交評(píng)論的按鈕

bg-product-list.jpg產(chǎn)品列表模塊的背景

icon-views.png瀏覽數(shù)的圖標(biāo)

icon-btn-vote.png投票按鈕

ad-news-aside.jpg在新聞側(cè)邊欄的廣告圖片

7.參考資料

一些前端書寫規(guī)范建議

關(guān)于團(tuán)隊(duì)合作的css命名規(guī)范

8.小結(jié)

關(guān)于命名,很簡(jiǎn)單罢维,也很難淹仑。也是困擾著很多的開發(fā)者,包括我言津。該文章的命名方式攻人,也是我在用的一種個(gè)人命名方式,希望能讓大家有所收獲悬槽。當(dāng)然其中還有很多的瑕疵怀吻,希望大家多多指點(diǎn),或者推薦下自己建議的命名方式初婆。

關(guān)于命名的規(guī)范蓬坡,每個(gè)公司都有自己的編碼規(guī)范,只是很少公司能認(rèn)真貫徹執(zhí)行自己的規(guī)范磅叛,從而導(dǎo)致命名錯(cuò)亂屑咳。所以命名的難點(diǎn),我不認(rèn)為是命名本身有難度弊琴,難度在于在項(xiàng)目上兆龙,面對(duì)各種需要命名的對(duì)象,堅(jiān)持使用一套命名格式敲董,正確的命每一個(gè)名紫皇。

作者:守候i

鏈接:https://juejin.im/post/5b6ad6b0e51d4519171766e2

來源:掘金

著作權(quán)歸作者所有慰安。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處聪铺。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末化焕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子铃剔,更是在濱河造成了極大的恐慌撒桨,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件键兜,死亡現(xiàn)場(chǎng)離奇詭異凤类,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蝶押,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門踱蠢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人棋电,你說我怎么就攤上這事∥郑” “怎么了赶盔?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)榆浓。 經(jīng)常有香客問我于未,道長(zhǎng),這世上最難降的妖魔是什么陡鹃? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任烘浦,我火速辦了婚禮,結(jié)果婚禮上萍鲸,老公的妹妹穿的比我還像新娘闷叉。我一直安慰自己,他們只是感情好脊阴,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布握侧。 她就那樣靜靜地躺著,像睡著了一般嘿期。 火紅的嫁衣襯著肌膚如雪品擎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天备徐,我揣著相機(jī)與錄音萄传,去河邊找鬼。 笑死蜜猾,一個(gè)胖子當(dāng)著我的面吹牛秀菱,可吹牛的內(nèi)容都是我干的西设。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼答朋,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼贷揽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起梦碗,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤禽绪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后洪规,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體印屁,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年斩例,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了雄人。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡念赶,死狀恐怖础钠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情叉谜,我是刑警寧澤旗吁,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站停局,受9級(jí)特大地震影響很钓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜董栽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一码倦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧锭碳,春花似錦袁稽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至闻葵,卻和暖如春民泵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背槽畔。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工栈妆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓鳞尔,卻偏偏與公主長(zhǎng)得像嬉橙,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子寥假,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5市框? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 27,422評(píng)論 1 45
  • 前言 說是前言糕韧,其實(shí)也是本文誕生的目的枫振。隨著公司業(yè)務(wù)的不斷增加,功能的快速迭代萤彩,app的業(yè)務(wù)線越來越多粪滤,代碼體積變...
    Yealink閱讀 5,274評(píng)論 0 13
  • 最近幾天,我情緒波動(dòng)大的時(shí)候雀扶,就會(huì)想求安慰杖小,一般會(huì)找父母傾訴一下。 在這個(gè)過程中愚墓,我發(fā)現(xiàn)予权,他們給我很多理解和鼓勵(lì),...
    海魚戀閱讀 225評(píng)論 0 0
  • 夜里一直做夢(mèng) 怕夢(mèng)醒后答案還沒找到 拒絕醒來 醒后 那個(gè)疑問還在 生之途 是征程還是歸程转绷? 其實(shí)很多問題 無需答案...
    倚材閱讀 510評(píng)論 0 3
  • cocoapod 大家都用過伟件,一些好的第三方的,比如Masonry 议经,AFNetworking,那你有沒有想過有一...
    pengxiaochao閱讀 680評(píng)論 0 1