如何給變量起個好名字?


把標題改成《如何給你的娃起個好名字》,會不會大大提高點擊點擊量呀。
本篇將從三方面來說明變量名的重要性,及取名的方法:

  1. 為什么 current 是個壞名字?
  2. 衡量好名字的標準
  3. 立即可用的命名方法

1. 為什么 current 是個壞名字?

current 常常會納入程序員的法眼,初看 current 表意還挺明確,比x,i,j,c要明確多了?仔細斟酌后,發(fā)現(xiàn) current 是很糟糕的名字,表示 “當前” 什么,“當前人員”還是“當前日期”,還是“當前計算和”?current 沒有告訴你,每次都需要看很多代碼才能最終確定,說不定還得配上一大段注釋。
下圖是github上命名為current的變量,能說出該變量保存的是什么嗎?

github上抓取的current變量名

準確來說,變量名就是變量,需要慎重對待。給自己家的寵物狗取名小黃、小白,比取名“狗1,狗2,大狗,小狗”,要明確的多,就是因為帶上了小狗的特征,變量名也應(yīng)該如此:

不需要解釋的才是好名字

2. 衡量好名字的標準

看一個變量名好不好,要看是否準確地描述了用戶的需求,如果用戶需求是 employe(雇員),就不應(yīng)該使用 person(人)。
還有個很常見的變量,我們常會把狀態(tài)標記命名為 bitFlag(比特標記),有經(jīng)驗的程序員可能會猜測出該變量的功能,甚至是占用內(nèi)存大小,但這僅僅說明 bitFlag 是“怎么做的”,而關(guān)于這個標記是“做什么的”,我們一無所知,所以不如取名為 wifiReady,這樣可以馬上知道該標記是表示“wifi網(wǎng)絡(luò)是否準備好”;同樣的理由,把求和結(jié)果放在 sum中 就比 value 好。
所以,仔細看看需求文檔,查查權(quán)威字典,確認找到的單詞能準確表達需求描述的東西。

好變量名的原則就是:是什么就叫什么!

3. 立即可用的命名方法

方法0. 用自然語言描述變量,然后找合適單詞組合

先用自然句子描述變量的作用:“一個用于顯示地名的文字標簽”;
然后去掉句子中的數(shù)量詞、動詞,將名詞串聯(lián)起來:
PlaceNameLabel
再如:
一個顯示中國城市名稱的列表:CityNameOfChinaTable
顯示世界某國城市名稱列表:CityNameOfCountryTable

方法1. 把限定詞放在最后

一個項目中,為避免同時出現(xiàn) totalRevenue 和 revenueTotal ,把 total 這樣表示變量屬性的詞,都統(tǒng)一放在名字的最后,這樣我們在程序中可以避免大量的歧義:revenueTotal(總收入),expenseTotal(總支出),expenseAverage(平均支出)等等都是意思表達很明確的詞,而且表現(xiàn)出統(tǒng)一的規(guī)律,反過來就有點繞了: totalExpense,averageExpense。

限定詞表

單詞 含義
total 總額
sum 求和
average 平均值
max 平均值
min 平均值
record 記錄
string 字符串
pointer 指針

方法2:準確使用成對的詞

對照下表,不需要再思考如何找到對應(yīng)的單詞了。

成對出現(xiàn)的詞表

單詞對 含義
begin / end 開始 / 結(jié)束
first / last 第一個 / 最后一個
locked / unlocked 加鎖 / 解鎖
min / max 最小 / 最大
previous / next 前一個 / 后一個
old / new 舊的 / 新的
opened / closed 打開 / 關(guān)閉
visible / invisible 可見的 / 不可見
source / target 來源 / 目標
source / destination 出發(fā)處 / 目的地
up / down 上 / 下
expand / fold 展開 / 折疊
login / logout 登錄 / 登出

方法3. 區(qū)分子系統(tǒng)

實際開發(fā)中,對于一個對象,比如同樣的 employe ,獲取途徑往往不同,從網(wǎng)絡(luò)接口拿到的 employe 的工資叫 revenue ,而界面上用的卻稱為 pay,相同對象的數(shù)據(jù)在不同子系統(tǒng)里卻有不同的名稱,大部分情況我們不能要求服務(wù)端做對應(yīng)修改,為了避免這種混亂,可以分別將服務(wù)端的雇員命名為 ServerEmploye,將界面使用的 UIEmploye。

方法4. 不要混用近似單詞

我曾經(jīng)參與開發(fā)的一個APP有個首頁模塊,主界面控制器命名為 HomeViewController,結(jié)果開發(fā)用戶設(shè)置界面的兄弟將他的控制器命名為 UserHomeViewController,而在寫tableView單元格的時候,又命名為 CustomerHomeCell,可怕的是,有些開發(fā)人員還把其它界面的主入口也命名為 home,比如BookReaderHomeViewController,你們可以想象一下,當我要找首頁類,輸入 home, 看到查找結(jié)果時的心情。
所以花點時間,與小組開發(fā)人員約定,對于用戶對象,在 user 和 customer 選一個就好;搜一下代碼庫,發(fā)現(xiàn)大家表示顏色,都用 color, 就不要使用 colour。
還要注意單詞的拼寫錯誤,從數(shù)據(jù)庫查出來的視頻叫做 vedio ,就不要全部都以誤傳誤的全部都使用 vedio,這樣會導(dǎo)致因為一個單詞,開發(fā)小組辯論20分鐘,還有幾個堅持 vedio 是正確拼寫的窘境;如果實在不知道正確拼寫,就用 movie 吧。

現(xiàn)在,你應(yīng)該對變量名的重要性,取名的方法有了一定的認識了吧,正如《計算機程序的構(gòu)造和解釋》中的名言:

“代碼是寫給人看的,不是寫給機器看的,只是順便計算機可以執(zhí)行而已”

起好變量名,是成為優(yōu)秀程序員的第一步,也是最容易入手的一步。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容