筆記二 (下)

第2章  封裝信息到名字 (Packing information into names)

 

2.4  附加額外信息

1)  encode value type 

  對於某些變量,附加額外的信息能夠讓人更好的理解,好比,一個16進制的變量,顯然 hex_id 要比  id 更爲貼切html

string  id;     // Example: "af84ef845cd8"
string  hex_id;

2)  encode value units

  下面的 JavaScript 代碼,乍看沒有任何問題,但實際上 getTime() 返回值的單位是 ms 而不是 sapi

var start = (new Date()).getTime(); // top of the page
...
var elapsed = (new Date()).getTime() - start; // bottom of the page
document.writeln("Load time was: " + elapsed + " seconds");

  將 _ms 做爲後綴加到變量的後面,則會使代碼變得更爲清晰安全

var start_ms = (new Date()).getTime(); // top of the page
...
var elapsed_ms = (new Date()).getTime() - start_ms; // bottom of the page
document.writeln("Load time was: " + elapsed_ms / 1000 + " seconds");

   除了時間之外,還有一些別的單位以下表所示:ide

 Fucntion parameter  Renaming parameter to encode units
 Start (int  delay)  delay -> delay_secs
 CreateCache (int  size)  size -> size_mb
 ThrottleDownload(float  limit)  limit -> max_kbps
 Rotate (float  angle)  angle -> degrees_cw

 3)  encode other attributes

  如上述漫畫所示,一些有關安全的變量命名,也經常須要一些額外的信息函數

 Situation  Variable name  Better name
 A password is in "plaintext" and should be encrypted before further processing  password  plaintext_passord
 A user-provided comment that needs escaping before being displayed  comment  unescaped_comment
 Byte of html have been converted to UTF-8  html  html_utf8
 Incoing data has been "url encoded"  data  data_urlenc

2.5  長名長域,短名短域

1)  短名短做用域

  變量 m 並無封裝任何信息,可是由於只在 if 做用域內有效,因此並不對妨礙代碼的理解oop

if (debug) {
  map<string,int> m;
  LookUpNamesNumbers(&m);
  Print(m);
}

2)  善用縮寫

  當變量名實在太長時,可考慮縮寫,其使用原則就是:新加入的團隊成員,也可以理解該縮寫的意思 ui

  例如,evaluation 常縮寫爲 eval,document 可縮寫爲 doc,string 縮寫爲 strlua

3)  去掉無用詞

  好比,ToString() 優於 ConvertToString(),ServeLoop() 也比 DoServeLoop() 簡潔url

2.6  使用大寫或下劃線

   在谷歌 C++ Style Guide 中,成員變量名字後面都帶有下劃線 "_";常量的命名形式爲 kConstantName,以便和 #define MACRO_NAME 宏區分開來;類名通常是各個首字母大寫,一樣成員函數名也是如此spa

static const int kMaxOpenFiles = 100;
class LogReader {
public:
    void OpenFile(string local_file);
private:
    int offset_;
    DISALLOW_COPY_AND_ASSIGN(LogReader);
};
相關文章
相關標籤/搜索