變量、函數(shù)、類(lèi)的命名規(guī)則
更新時(shí)間:2011年08月14日 15:22:05 作者:
在閱讀clean code書(shū)籍的時(shí)候,讓我體會(huì)很多,因此我也用文字記錄下這些有意義的知識(shí)。我認(rèn)為這本書(shū)讀十遍都不為過(guò),下面我講解一下自己的關(guān)于變量、函數(shù)、類(lèi)的命名規(guī)則筆記。
1、命名要名副其實(shí):
命名的時(shí)候一定要考慮他的顯示意義和語(yǔ)境,不要認(rèn)為把時(shí)間花費(fèi)在變量的命名上很浪費(fèi)。當(dāng)然如果你程序很短的話,就不需要考慮那么多了,埋頭就寫(xiě)代碼。如果你的項(xiàng)目大,而且文件多的情況下,最好就是要花費(fèi)時(shí)間在命名上,因?yàn)槟愕拇a不僅僅只是你一個(gè)人看的。
2、避免誤導(dǎo):
也就是說(shuō)不要把其他平臺(tái)的關(guān)鍵字拿來(lái)命名,比如說(shuō)我使用javascript語(yǔ)言,而我設(shè)計(jì)了一個(gè)變量為int,這讓人會(huì)很頭疼,為什么要一個(gè)int變量呢,難道這段代碼是C++。這樣就會(huì)讓人產(chǎn)生誤導(dǎo)。如果你想一個(gè)整型變量你可以這樣,var intNumber;
3、做有意義的區(qū)分:
variable:永遠(yuǎn)不要拿來(lái)作為變量的名稱(chēng)、table永遠(yuǎn)不要拿來(lái)作為表的名稱(chēng),等等。不要使用相似的命名,必須做有意義的區(qū)分,比如說(shuō):有一組變量,有些童鞋會(huì)這樣命名,a1、a2、a3...,而如果我們根據(jù)他們的作用來(lái)命名效果會(huì)好很多。
4、使用容易讀懂的名稱(chēng):
最好就是使用一段英文,或者英文短語(yǔ),切莫一些中文,一些英文混合,或者單純的中文。比如:我們想寫(xiě)一個(gè)函數(shù)作用是,切換語(yǔ)言:qieHuanYuYan,這樣的話大家讀起來(lái)就會(huì)一個(gè)個(gè)的去拼寫(xiě),而且最后還不一定能夠拼寫(xiě)成功,如果改為:changeLanguage效果會(huì)好很多。
5、使用可搜索的名稱(chēng):
我建議大家在使用阿拉伯?dāng)?shù)字的時(shí)候,最好能在代碼的最開(kāi)始,使用大寫(xiě)加下劃線定義。比如說(shuō)50度是一個(gè)人體能夠承受的電力最大福特越界值,那么我們可以命名為:PEOPLE_MAX_VOLTA;當(dāng)然我英語(yǔ)能力有點(diǎn)不好,但是基本是這個(gè)原理。如果單純的使用50的話,會(huì)讓人不知道這個(gè)是什么標(biāo)準(zhǔn),如果變成變量就容易閱讀。而且大家最好不要使用單個(gè)的英文字母,因?yàn)槟菢訒?huì)造成相當(dāng)大的麻煩,不僅僅是搜索,而且也難易理解。
6、避免使用編碼:
不要使用一些前綴命名,比如說(shuō)加一個(gè)m_之類(lèi)的,這樣雖然可以多次命名,但是會(huì)讓人難以讀懂。
7、避免思維映射:
避免單個(gè)名稱(chēng),明確才是王道,不要以為你的單個(gè)名稱(chēng)別人看不懂,你就很牛逼。如果代碼看起來(lái)像看小說(shuō)一樣,那才叫牛逼。
8、類(lèi)名、方法名
類(lèi)名應(yīng)當(dāng)是名詞、或者名詞短語(yǔ)。例如:Customer、WikiPage,避免使用Maneger、Perocessor這類(lèi)帶有動(dòng)作的詞語(yǔ);方法名,盡量的能夠體現(xiàn)出這個(gè)方法的動(dòng)作,所以最好使用動(dòng)詞,或者動(dòng)詞短語(yǔ),例如:postMail、deletePage,等等。
9、每個(gè)概念對(duì)應(yīng)一個(gè)詞:
給每個(gè)抽象概念選一個(gè)詞并且一以慣之,例如使用get、方法,getMsg()、getUsername()、getUerId()等等。
10、不要使用雙關(guān)語(yǔ):
避免同一個(gè)單詞用于不同的目的,比如說(shuō)add這個(gè)就不是很好,可以使用append這類(lèi)詞語(yǔ)替換他。
11、添加語(yǔ)境:
就是給一些變量或者函數(shù)一些語(yǔ)境,比如說(shuō):這段變量,firstName、lastName、street、state,這些東西看起來(lái)我們都明白,但是我們都不知道他是描述什么的,如果加上address,改為;addressFirstName、addressLastName、addressStreet、addressState,這樣的話就明朗很多了。
大家在對(duì)變量、函數(shù)、類(lèi)命名的時(shí)候一定不要害怕他很長(zhǎng),只要能夠讀懂就好,當(dāng)然如果短能夠描述的清楚的話,還是必須得選擇短的,我是想說(shuō)如果想描述清楚,不要害怕變量、函數(shù)、類(lèi)的命名太長(zhǎng)。
命名的時(shí)候一定要考慮他的顯示意義和語(yǔ)境,不要認(rèn)為把時(shí)間花費(fèi)在變量的命名上很浪費(fèi)。當(dāng)然如果你程序很短的話,就不需要考慮那么多了,埋頭就寫(xiě)代碼。如果你的項(xiàng)目大,而且文件多的情況下,最好就是要花費(fèi)時(shí)間在命名上,因?yàn)槟愕拇a不僅僅只是你一個(gè)人看的。
2、避免誤導(dǎo):
也就是說(shuō)不要把其他平臺(tái)的關(guān)鍵字拿來(lái)命名,比如說(shuō)我使用javascript語(yǔ)言,而我設(shè)計(jì)了一個(gè)變量為int,這讓人會(huì)很頭疼,為什么要一個(gè)int變量呢,難道這段代碼是C++。這樣就會(huì)讓人產(chǎn)生誤導(dǎo)。如果你想一個(gè)整型變量你可以這樣,var intNumber;
3、做有意義的區(qū)分:
variable:永遠(yuǎn)不要拿來(lái)作為變量的名稱(chēng)、table永遠(yuǎn)不要拿來(lái)作為表的名稱(chēng),等等。不要使用相似的命名,必須做有意義的區(qū)分,比如說(shuō):有一組變量,有些童鞋會(huì)這樣命名,a1、a2、a3...,而如果我們根據(jù)他們的作用來(lái)命名效果會(huì)好很多。
4、使用容易讀懂的名稱(chēng):
最好就是使用一段英文,或者英文短語(yǔ),切莫一些中文,一些英文混合,或者單純的中文。比如:我們想寫(xiě)一個(gè)函數(shù)作用是,切換語(yǔ)言:qieHuanYuYan,這樣的話大家讀起來(lái)就會(huì)一個(gè)個(gè)的去拼寫(xiě),而且最后還不一定能夠拼寫(xiě)成功,如果改為:changeLanguage效果會(huì)好很多。
5、使用可搜索的名稱(chēng):
我建議大家在使用阿拉伯?dāng)?shù)字的時(shí)候,最好能在代碼的最開(kāi)始,使用大寫(xiě)加下劃線定義。比如說(shuō)50度是一個(gè)人體能夠承受的電力最大福特越界值,那么我們可以命名為:PEOPLE_MAX_VOLTA;當(dāng)然我英語(yǔ)能力有點(diǎn)不好,但是基本是這個(gè)原理。如果單純的使用50的話,會(huì)讓人不知道這個(gè)是什么標(biāo)準(zhǔn),如果變成變量就容易閱讀。而且大家最好不要使用單個(gè)的英文字母,因?yàn)槟菢訒?huì)造成相當(dāng)大的麻煩,不僅僅是搜索,而且也難易理解。
6、避免使用編碼:
不要使用一些前綴命名,比如說(shuō)加一個(gè)m_之類(lèi)的,這樣雖然可以多次命名,但是會(huì)讓人難以讀懂。
7、避免思維映射:
避免單個(gè)名稱(chēng),明確才是王道,不要以為你的單個(gè)名稱(chēng)別人看不懂,你就很牛逼。如果代碼看起來(lái)像看小說(shuō)一樣,那才叫牛逼。
8、類(lèi)名、方法名
類(lèi)名應(yīng)當(dāng)是名詞、或者名詞短語(yǔ)。例如:Customer、WikiPage,避免使用Maneger、Perocessor這類(lèi)帶有動(dòng)作的詞語(yǔ);方法名,盡量的能夠體現(xiàn)出這個(gè)方法的動(dòng)作,所以最好使用動(dòng)詞,或者動(dòng)詞短語(yǔ),例如:postMail、deletePage,等等。
9、每個(gè)概念對(duì)應(yīng)一個(gè)詞:
給每個(gè)抽象概念選一個(gè)詞并且一以慣之,例如使用get、方法,getMsg()、getUsername()、getUerId()等等。
10、不要使用雙關(guān)語(yǔ):
避免同一個(gè)單詞用于不同的目的,比如說(shuō)add這個(gè)就不是很好,可以使用append這類(lèi)詞語(yǔ)替換他。
11、添加語(yǔ)境:
就是給一些變量或者函數(shù)一些語(yǔ)境,比如說(shuō):這段變量,firstName、lastName、street、state,這些東西看起來(lái)我們都明白,但是我們都不知道他是描述什么的,如果加上address,改為;addressFirstName、addressLastName、addressStreet、addressState,這樣的話就明朗很多了。
大家在對(duì)變量、函數(shù)、類(lèi)命名的時(shí)候一定不要害怕他很長(zhǎng),只要能夠讀懂就好,當(dāng)然如果短能夠描述的清楚的話,還是必須得選擇短的,我是想說(shuō)如果想描述清楚,不要害怕變量、函數(shù)、類(lèi)的命名太長(zhǎng)。
您可能感興趣的文章:
- C++代碼規(guī)范之命名規(guī)則
- C# 命名規(guī)則(挺不錯(cuò)的)
- VC中SDK與MFC的區(qū)別淺析
- MFC自定義消息的實(shí)現(xiàn)方法
- MFC實(shí)現(xiàn)全屏功能代碼實(shí)例
- 構(gòu)建mfc窗體的簡(jiǎn)單示例
- MFC中exe圖標(biāo)修改的方法
- 新舊MFC版本實(shí)現(xiàn)CEdit透明的2種方法的實(shí)例代碼
- 關(guān)于在MFC中將窗口最小化到托盤(pán)實(shí)現(xiàn)原理及操作步驟
- IE8引發(fā) VS2005/2008 MFC向?qū)С鲥e(cuò)的解決方案
- MFC命名規(guī)則匯總
相關(guān)文章
linux系統(tǒng)使用vscode進(jìn)行qt開(kāi)發(fā)的過(guò)程分享
最近在Linux上搞Qt,搞的一頭霧水,小編把整個(gè)過(guò)程記錄下,分享需要的朋友,如果大家對(duì)linux系統(tǒng)使用vscode進(jìn)行qt開(kāi)發(fā)相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧2021-12-12如何設(shè)計(jì)一個(gè)幾十萬(wàn)在線用戶彈幕系統(tǒng)需求方案
這篇文章主要介紹了為大家如何設(shè)計(jì)一個(gè)幾十萬(wàn)在線用戶彈幕系統(tǒng)的需求實(shí)現(xiàn)方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>2023-05-05Git撤銷(xiāo)已經(jīng)推送(push)至遠(yuǎn)端倉(cāng)庫(kù)的提交(commit)信息操作
這篇文章主要介紹了Git撤銷(xiāo)已經(jīng)推送(push)至遠(yuǎn)端倉(cāng)庫(kù)的提交(commit)信息操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09手把手教你學(xué)會(huì)HBuilder打包APP
我們打包APP需要用到HBuilder,所以本文主要介紹了HBuilder下載安裝以及如何使用,最后介紹如何打包app,感興趣的可以了解一下2021-06-06