**就是程式設計師我們在專案開發中,接觸到的變數、函式、類多數都是專案自己定義的,往往都是為了解決一些特定的領域的問題,引入了各種各樣的概念,**裡面的名字 就對應著問題領域或方案領域的這些概念,所以,對於乙個命名良好,**規範,設計簡潔的系統,要想非常快的理解乙個系統,最直接的方式就是 rtfc(read the ****ing code)。對於乙個不斷演進的系統,**的可讀性至關重要,首要要解決的問題就是名字,變數名、函式名、類名等都需要仔細斟酌,認真對待,乙個能夠簡 潔,能夠清晰表達概念和意圖的名字就顯得尤為重要。的孩子,給「孩子」取個好聽的名字很重要!
閱讀《**整潔之道》這本書後發現其中說的內容在我們自己專案中比比皆是,隨便拿出一塊**都可以當做反面教材給大家講半天。長時間積累,導致** 發霉變質,取名也是毫無章法,信手拈來。閱讀這樣的**,撞南牆的心都有了。下面結合自己專案中的問題和《**整潔之道》談談關於命名相關的原則。
1. 原則:名副其實
bad:
int t = currenttime.elapse(e); // 消逝的時間,以毫秒計
...if (t > timeout_value)
good:
int elapsed_ms = currenttime.elapse(e);
...if (elapsed_ms > timeout_value)
2. 原則:避免誤導
bad:
std::vectoraccount_list; // _list就是乙個誤導, accounts會更好
bool sendtozoneserver(); // 和下面的函式差別很小
bool sendtozoneservers(); // sendtoallzoneservers會好點
3. 原則:做有意義的區分
bad:
void copy(char a1, char a2)
good:
void copy(char source, char dest)
4. 原則:使用可讀的名字
猜一猜下面的類是幹什麼的?和別人怎麼說這幾個類?
根據這些簡直**的縮寫,如果沒有注釋基本上很難知道是幹什麼的,當你和別人交流的時候,你就不得不乙個乙個字母來念「x-l-q-y」、「l- t-q manager」,鬼知道你說的是什麼?ps. xlqy-xianlvqiyuan(仙履奇緣), ltq-liaotianqun(聊天群),有這樣的名字也是醉了。
bad:
class xlqy;
class fcnv;
class ltqmanager;
5. 原則:使用可搜尋的名字
bad:
if (obj->base->id == 4661) // 4661是啥玩意?
int e; // 怎麼查詢?
***x:iterator it; // 變數作用的範圍比較大的時候,也不見得是個好名字
good:
#define ojbect_feedback_card 4661
if (ojbect_feedback_card == obj->base->id)
6. 原則:避免使用編碼
ps.匈牙利命名對於我們這些在linux下摸爬滾打的好多年的來說,看著真心彆扭。
ps.說到這一點,可能有些同學有不同意見了,「我這樣寫是為了區分成員變數和臨時變數啊!」,好像這樣寫也沒什麼大不了,遵循**規範即可。如 google的c++**規範,私有變數形如:***_,加字尾_,其目的除了讓你知道這貨是個私有變數,還有一點就是防止有些人圖省事把帶私有變數直接 public掉,因為誰也不喜歡在**裡面看到大量這些帶把的玩意。
7. 原則:名字盡量來自解決方案領域或問題領域
寫**的同學多數都是都出自cs,術語、演算法名、模式名、數學術語儘管用。如accountvisitor:visitor模式實現的account類。
我們**裡面多數都是這些名稱,不明白找策劃問問,基本上都是功能相關的名稱。
8. 原則:適當使用有意義的語境
bad:
// 看著整齊?使用方便?
dword love_ensure_type_; //當前的愛情保險型別
dword love_ensure_ret_; //購買愛情保險回應標示
dword love_ensure_total_; //現在已經蓋章數目
dword love_ensure_..._; //...
dword love_ensure_..._; //...
最後:我們的c++命名規範
類名/命名空間名:
函式名:
變數名:
取名是一件嚴肅的事情,我們需要認真對待,名字代表著乙個個概念,名字代表著你想表達的意圖,好名字是可讀**的首要條件:
編碼之道 取個好名字很重要 IT藍豹
就是程式設計師的孩子,給 孩子 取個好聽的名字很重要!我們在專案開發中,接觸到的變數 函式 類多數都是專案自己定義的,往往都是為了解決一些特定的領域的問題,引入了各種各樣的概念,裡面的名字就對應著問題領域或方案領域的這些概念,所以,對於乙個命名良好,規範,設計簡潔的系統,要想非常快的理解乙個系統,最...
起個好名字的重要性
最近很多人關注 net開發人員犯的6大安全錯誤 這篇小短文http blog.csdn.net testing is believing archive 2007 12 21 1958004.aspx csdn還把它放到主頁面的專家專欄中,不過鬱悶的是把我的名字寫成了 陳技能 想起來從小時候到現在,...
起個好名字的重要性
最近很多人關注 net開發人員犯的6大安全錯誤 這篇小短文 csdn還把它放到主頁面的專家專欄中,不過鬱悶的是把我的名字寫成了 陳技能 想起來從小時候到現在,叫錯我的名字的也不多,有些人把我叫成了 陳能枝 不過叫錯的還是以 陳技能 居多。大學的時候跟一位老師到南海做專案,老師是這樣介紹我的 能力很強...